我正在使用 python-mysql(MySQLdb) 查询 Mysql 服务器。 游标模块有两种:一种是客户端游标,如:
cursor = db.cursor(MySQLdb.cursors.DictCursor)
另一种是服务端游标,如:
cursor = db.cursor(MySQLdb.cursors.SSDictCursor)
文档说服务器端游标意味着 Mysql 会在 mysql 服务器端缓存一些结果,然后将它们发送给客户端。我对此很困惑,比方说,如果我想杀死一个 mysql 服务器,我可以只使用多个服务器端游标,然后 mysql 就会因为内存耗尽而死掉。此外,服务器大小光标是否有意义?默认情况下,Mysql机制是当mysql检索到一条记录时,它会立即将其发送给客户端。缓存结果然后将它们发送出去是否有意义?
我真的不知道应该使用哪个游标,客户端游标还是服务器端游标?
最佳答案
我不是周围最伟大的数据库忍者,但通常情况下,服务器软件中内置的东西在一般或常见情况下并不是很有用,但在那个小角落情况下真的非常棒。
Nimdil 给了你一个,但这是另一个:
http://techualization.blogspot.com/2011/12/retrieving-million-of-rows-from-mysql.html
此人断言 SScursor 更像是一个“无缓冲”游标。
这似乎与此矛盾:
http://dev.mysql.com/doc/refman/5.7/en/cursor-restrictions.html
无论如何,服务器端游标的使用似乎是在您处理数据集时,这样您的查询可能会使客户端不堪重负。
关于mysql - 我对 MySQLdb 服务器端游标和客户端游标感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33704316/