【发布时间】:2010-11-17 12:07:09
【问题描述】:
我在我的 windows vista 安装上运行 MySQL 5.1。有问题的表使用 MyISAM,大约有 1000 万行。它用于存储用户在网站上发布的短信。
我正在尝试对其运行以下查询,
query = "select id, text from messages order by id limit %d offset %d" %(limit, offset)
limit 设置为固定值(在本例中为 20000),offset 以 20000 为增量递增。
当偏移量 = 240000 时,此查询进入无限循环。这个特定值而不是任何其他值。
我将此查询隔离到一个脚本中并运行它,得到了相同的结果。然后我尝试直接运行最后一个查询(偏移量 = 240000),它成功了!
然后我尝试直接在 mysql 客户端中执行相同的查询,以确保错误不在 python DB 访问器模块中。所有查询都返回结果,除了偏移量 = 240000 的查询。
然后我查看了mysql服务器日志,看到了以下内容。
[ERROR] C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld: Sort aborted
这可能意味着当我停止 python 进程时(出于沮丧),mysqld 进程正在“排序”某些东西。当我查看 my.ini 文件时,我看到了很多 MAX_* 选项。我目前正在试验这些,但同时把它扔在那里。
任何帮助表示赞赏!
【问题讨论】:
-
我的配置文件中的一些其他信息,myisam_max_sort_file_size=100G myisam_sort_buffer_size=68M key_buffer_size=55M read_buffer_size=64K read_rnd_buffer_size=256K sort_buffer_size=256K
-
另一个有趣的观察,内存/cpu占用在代码到达这一点后没有改变(偏移量= 240000)