2009-10-29 63 views
0

我已经使用ARCHFLAGS =“ - arch x86_64”在这些instructions by Hivelogic和mysql(2.8.1)gem之后安装了MySQL 5.1.40源代码分发(64位可执行x86_64)。在Snow Leopard下MySQL非常慢

我正在使用它进行Ruby on Rails开发,而我的问题是,即使MySQL以各种方式工作,它都非常缓慢。
执行标准rake数据库时使用sqlite3进行比较:迁移创建约15个表。

的MySQL:

时间耙分贝:迁移
真正0m4.882s
用户0m1.426s
SYS 0m0.235s

的sqlite3:

时间rake db:migrate
个真实0m2.282s
用户0m1.501s
SYS 0m0.255s

我们还必须考虑到对每个测试的执行时间1.5s左右是轨道框架这意味着sqlite3的执行的加载SQL任务大约需要0.5-1s,而MySQL需要超过3s才能完成同一组任务。

这不就是错的吗?这可能是什么原因?任何遇到同样问题的人?

我已经安装和重新安装了MySQL和MySQL的/红宝石宝石几次,但总是以同样的结局... :(

我的雪豹是升级安装,而不是一个全新安装。也许这是这个问题的原因是什么?一些过时的库?

谢谢!

回答

0

在你的问题中的数据,这听起来像你是比较香蕉和橘子。

具体来说,你有什么证据证明水库ults甚至不符合要求?与运行相同测试的其他平台进行比较?

这甚至是一个与你最终想做的事情相关的测试吗?即你是否正在测试与通常要做的一组典型任务相关的事情,或者试图对安装期间发生的一次性任务进行优化?

还要注意,SQLite和MySQL具有截然不同的性能配置文件。 SQLite是一个单用户,非客户端/服务器数据库,而MySQL通常配置为以客户/服务器角色工作。除了完全不同的性能配置文件之外,这也会导致完全不同的可扩展性特征。

+0

感谢您的回复! 我与另一个平台的唯一比较是,我在Leopard下运行了相同的测试套装(使用上面的db:migrate),现在它在Snow Leopard下显着更慢,执行时间在Leopard中大约需要1分钟,在雪豹4分钟。 我也注意到,mysql似乎“呛”了Leopard下没有发生的事情。如果我尝试插入200条记录 - 第一个30-40的闪电速度很快(〜0.8ms),但是尽管第一个插入和最后一个插入之间的复杂性相同,但它会大幅减速至每插入200ms。 – mrD 2009-10-30 09:05:02

+0

好的 - 我建议在Leopard和Snow Leopard上都使用'sample'来获得CPU周期正在进行的概览。这也可能是由于两个操作系统之间的磁盘同步更改所致。无论如何,通常需要将数据库调优到特定的系统。 – bbum 2009-10-30 15:23:00