我一直在注意到运行Apache / PHP / MySQL的服务器中的一个性能问题。
所以我决定对其他服务器进行调查和testing。
我做了什么?
在三台不同的服务器上,我创build了一个包含4列( id (int), title (varchar 255), description (text), date (timestamp))的单个innodb表( table_sandbox )的数据库( db_sandbox )。 注意: id是自动增量的主键。
我创build了一个简单的PHP例程,该例程包含15.000条logging到这个表中,使用3种不同的方法:
在别的之前,方法2和3显然是性能最好的。 但这不是重点。 实际上,方法2和3只是理想的情况,但很less发生。
无论如何,当我比较这些结果时,我感到惊讶。 考虑到SERVER-1作为我有问题的服务器,这就是我得到的:
我的结论是,SERVER-1的设置中有一些影响多个单独查询的运行。
有谁知道他们可能是什么设置?
SERVER-1:这是一个虚拟机
SERVER-2
SERVER-3
注意 :我比较了SERVER-1和SERVER-3的 my.ini ,它们几乎完全相同。 SERVER-2 ,运行Mysql 5.0有很大的不同。
经过大量的testing和尝试不同的组合,我不能说我find了完美的解决scheme,这可能包括我的IT人员找不到的虚拟机设置。 无论如何,以下是真正改善性能的两件事情(请记住,这仅适用于INNODB ):
1 – 使用事务,即closures自动提交,完成所有事务,并在最后提交。
2 – 通过将innodb-flush-log-at-trx-commit设置为0或1,可以大大提高性能。 请阅读完整的文档以了解此操作的后果。
我希望这会帮助别人。