mysql - 我对 MySQLdb 服务器端游标和客户端游标感到困惑

标签 mysql mysql-python database-cursor

我正在使用 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/

相关文章:

php - 终端和工作台中的Mysql看不到相同的数据库

python - Python 数据库 API 中是否指定了连接对象的 __enter__ 和 __exit__ 行为?

python - 将外部 SQL 文件读入 Pandas Dataframe

mysql - 从存储过程返回游标

sql-server - SQL、While 循环、递归存储过程或游标哪个更快?

PHP 标签中的 JavaScript 确认框不断返回 TRUE

Mysql 对某些命令的权限

mysql - 在两个表之间交换两列值

python - 尝试在 Mac 上安装 MySQL-python 但一直出现错误

mysql - 如果存在,则更新,否则插入,存储过程中的游标仅返回 1 行