我的MacBook与其他环境下的Mysql运行速度相当慢
我想在我的MacBook上加速我的MySQL。它比运行在我们的服务器上或其他笔记本电脑上的虚拟机上的MySQL要慢得多。我的MacBook与其他环境下的Mysql运行速度相当慢
我处理的所有表格都是InnoDB。我运行了很多django单元测试,因此有很多创建表命令可以运行。
更新:
我要指出,我真的比较这另一台笔记本电脑,运行Fedora的虚拟机,没有调整到my.cnf文件,而不是一个特别快的硬盘驱动器。我也知道我们的服务器运行得非常快,但我可以接受。
我的猜测是它仍然可能是一个硬盘问题。
您是否已经调整了Macbook上的默认MySQL配置以更接近您的其他环境中正在发生的事情? MySQL的默认设置非常小。
我不熟悉这里的MySQL安装在OSX,但你应该有一个配置文件中针对不同的环境几个例子:通过复制他们 [mysql的家] /支持,文件/
体验这些到/etc/my.cnf并重新启动MySQL。这些示例文件都有很好的评论,所以这是学习一些基本的MySQL Tuning的很好的实践方法。如果您确实只是运行InnoDB,那么您可以在每次尝试保存资源时注释掉或删除MyISAM设置。
有一点要记住:你的MacBook有一个笔记本电脑硬盘。即使它是7200 RPM,你也应该预料它会比速度较慢的服务器硬盘慢一些,速度肯定比较慢。
即使在超高速机器上,django的测试套件也会激活所有数据库缓存,因为它每次运行时都会重建数据库。
你可以尽管运行在内存中的单元测试,这是快几个数量级:
创建一个新的testsettings.py
文件旁边的应用程序的settings.py
包含:
from projectname.settings import *
DATABASE_ENGINE = 'sqlite3'
然后,当你想运行测试真正的快,而不是manage.py test
,运行
manage.py test --settings=testsettings
更多here。
我也试过将MySQL数据库完全放在RAM磁盘上。不幸的是,我还没有在Mac OS X上工作过。
(所有这些假设没有什么严重的错误你的MySQL配置:)
硬盘是一个因素,但也请务必检查:
innodb_buffer_pool_size
如果您正在使用innodb你可能想把它变成更高的东西(你的RAM的50%,或者你的数据库的大小)。但请记住,这个数量将实际上由MySQL使用,所以如果你仍然想将你的RAM用于其他目的..你最好接受你的开发工作站不如调整为MySQL数据库的服务器那么快。
你没有告诉我们工作负载是什么,读取或更新,或者两者都有,但是如果是写密集型的,你可以尝试将innodb_flush_log_at_trx_commit设置为0,让innodb放松* sync()调用 - 也许有一个与苹果OS上的内核/磁盘子系统不良交互。
您也可以发布您正在使用的my.cnf。如果连接到数据库时出现缓慢,它也可能是一个DNS查找问题。要排除dns问题,请在my.cnf中设置skip-name-resolve。
我想你有你的列索引和表统计处理...我的意思是,当你从一台机器复制数据库到另一台机器时,索引和统计并不总是被复制过来。 – 2010-01-14 23:46:10
好的问题,但更适用于serverfault.com – 2010-01-14 23:47:32
DrJokepu - 即使从头开始创建数据库和索引明显更慢。 – 2010-01-14 23:49:41