我们有一个Windows 2003企业版服务器(64位)只运行MySQL 5.1.45 64位。 它在RAID 10中有16G RAM和10T硬盘空间。我们在mysqld(85-100%的CPU利用率)方面performance糟糕。 我们正在运行一台性能更好的小型机器,所以我假设我们的my.ini文件对于我们当前的机器是不正确的。 my.ini文件如下所示:
[client] port=3306 [mysql] default-character-set=latin1 [mysqld] port=3306 basedir="D:/MySQL/" datadir="D:/MySQL/data" default-character-set=latin1 default-storage-engine=MYISAM sql-mode="" skip-innodb skip-locking max_allowed_packet = 1M max_connections=800 myisam_max_sort_file_size=5G myisam_sort_buffer_size=500M table_open_cache = 512 table_cache=8000 tmp_table_size=30M query_cache_size=50M thread_cache_size=128 key_buffer_size=3072M read_buffer_size=2M read_rnd_buffer_size=16M sort_buffer_size=2M #replication settings (this is the master) log-bin=log server-id = 1
有没有人看到这个设置有什么问题? 对于有这么多RAM的机器,为什么在这个世界上mysqld会吃掉这么多的CPU呢? 我知道我们可以优化一些查询等,但它确实运行在一个较小的机器上,所以我很确定这是configuration。
在此先感谢您的帮助。
你使用innodb或myisam表? 如果您使用的是InnoDB,那么您应该设置InnoDB缓冲池大小。 这将有助于cachingRAM中的常见查询。 作为例外build议,考虑到你有16GB的RAM,你应该尝试设置MySQL使用10-14GB的RAM来caching常见的结果集和quires。
MySQL性能博客 – 更多信息: http : //www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
你应该增加read_buffer_size和sort_buffer_size。 对于具有16GB RAM的机器,没有理由将其设置为2MB的可怜大小。