【发布时间】:2016-02-15 17:13:39
【问题描述】:
我正在使用 python-mysql(MySQLdb) 来查询 Mysql 服务器。 游标模块有两种:一种是客户端游标,如:
cursor = db.cursor(MySQLdb.cursors.DictCursor)
另一种是服务器端游标,如:
cursor = db.cursor(MySQLdb.cursors.SSDictCursor)
文档说服务器端游标意味着Mysql会将一些结果缓存在mysql服务器端,然后将它们发送到客户端。我对此感到很困惑,比方说,如果我想杀死一个 mysql 服务器,我可以只使用多个服务器端游标,然后 mysql 将因为内存耗尽而死。此外,服务器大小光标是否有意义?默认情况下,Mysql 机制是当 mysql 检索到一条记录时,它会立即将其发送给客户端。缓存结果然后发送出去有意义吗?
我真的不知道我应该使用哪个游标,客户端游标还是服务器端游标?
【问题讨论】:
-
不是一个答案,因为我将其基于另一个执行相同操作的 DBMS.... 在某些情况下,您会逐页显示结果,即使有(比如说)10 页,因为根据它们的排序方式,用户通常只查看前 1 个。那么,为什么要通过网络发送所有 10 个页面。
-
问题是如果你需要 1 个页面,为什么要查询 10 个页面。那是糟糕的设计。
标签: mysql cursor mysql-python