Mysql 在数据库中缓存大型数据帧
我试图使用django.core.cache.backends.db.DatabaseCache backend将一个大熊猫数据帧缓存到MySQL数据库中。它适用于300000个项目,但不适用于任何更大的项目(例如400000个项目)。我可以增加缓存值的最大长度吗?提前谢谢Mysql 在数据库中缓存大型数据帧,mysql,django,pandas,caching,Mysql,Django,Pandas,Caching,我试图使用django.core.cache.backends.db.DatabaseCache backend将一个大熊猫数据帧缓存到MySQL数据库中。它适用于300000个项目,但不适用于任何更大的项目(例如400000个项目)。我可以增加缓存值的最大长度吗?提前谢谢 import pandas as pd import numpy as np from django.core.cache import cache, caches cache.set('data', pd.DataFra
import pandas as pd
import numpy as np
from django.core.cache import cache, caches
cache.set('data', pd.DataFrame(np.random.rand(300,1000))) # It works
cache.set('data', pd.DataFrame(np.random.rand(400,1000))) # It doesn't; no error, just no change in database
df = cache.get('data')
# It returns a dataframe with 300 rows × 1000 columns
# But I expect 400 rows x 1000 columns
原来原因是MySQL 5.7允许的最大数据包的默认值是4194304
SET GLOBAL max_allowed_packet=1073741824;
解决了这个问题。感谢danblack的建议。产生了什么错误?没有错误,但它返回的是较小的旧数据帧。MySQL的默认最大允许数据包是4MB,不知道这是不是原因,如果有一个(原因)是它的历史(甚至可能是歇斯底里的)。将其设置得过大不会产生不良影响。