我用python连接mysql,如下所示:
db = MySQLdb.connect(host="localhost", user="****", passwd="****", db="****", charset='utf8')
db.query(sql)
result = db.use_result()
event_data = result.fetch_row(maxrows=1, how=1)
if event_data:
event_data=event_data[0]
所以我不是一次获取所有的结果,而是一行一行地获取,它占用的内存更少,工作速度更快。通常它工作正常,但我有一个奇怪的错误:
3170,“超出了'range optimizer max mem\ u size'8388608字节的内存容量。未对此查询进行范围优化。
这很奇怪,因为结果是大约500000行,其中不是最大的一行,而且我正在逐行处理,没有将它提取到ram中,而且我以前从未遇到过这个错误。
我有一个大的'id in(*id's list)'表达式在里面,但如果查询太长,我会得到一个操作错误,我处理几个id块,从来没有问题。
1条答案
按热度按时间iqjalb3h1#
设置全局范围\优化器\最大\内存\大小=0;
0表示无限内存,您也可以在此处以字节为单位给出限制,如8388608