my.cnf根据配置优化

时间:2018-05-03 03:21:14

标签: mysql sql optimization mysqli query-optimization

我正在尝试MySQL的许多问题,内存使用率很高,特别是CPU使用率很高。

我有一个具有以下配置的专用服务器:

  

8 CPU Intel(R)Xeon(R)CPU E3-1240 v6 @ 3.70GHz
  16GB DDR3
  使用cPanel / WHM + MySQL的Linux Linux

以下是my.cnf文件:

[mysqld]
max_connections=1000
wait_timeout=1000
interactive_timeout=1000
long_query_time=50
slow_query_log = 0
#slow_query_log_file = /var/log/mysql/slow-query.log

default-storage-engine=MyISAM
log-error=/var/lib/mysql/dc.leilaoweb.com.err
max_allowed_packet=268435456
local-infile=0
event_scheduler = on
tmp_table_size=300M
max_heap_table_size=128M
open_files_limit=65000
performance-schema=1

innodb_file_per_table=1
innodb_log_file_size=512M
innodb_buffer_pool_size=8G
key_buffer_size=512M
innodb_buffer_pool_instances=8

# config cache
query_cache_limit=8M
query_cache_size=256M
query_cache_type=1
table_open_cache=6000
table_cache=5000
thread_cache_size=96

#bind-address=127.0.0.1
#skip-networking
#performance_schema=ON

skip-name-resolve

如何改进此设置以加快查询速度并且不会增加服务器负载?

1 个答案:

答案 0 :(得分:0)

这是一个有趣的问题,请求查询优化的帮助,其中没有提到特定的查询。

以下是有关配置选项的一些提示:

default-storage-engine=MyISAM

将默认存储引擎更改为InnoDB,并确保所有现有表都是InnoDB。不要使用MyISAM。

query_cache_size=256M
query_cache_type=1

将查询缓存大小和类型设置为0.查询缓存在极少数条件下非常有用,它已被弃用,并在MySQL 8.0中删除。最好根据具体情况在您的应用程序代码中缓存查询结果。

innodb_buffer_pool_size=8G

如果您有比8G更多的数据,请考虑增加缓冲池的大小。驻留在RAM中的数据和索引越多,性能就越好。但是,一旦您的数据和索引在缓冲池中100%缓存,添加RAM就没有进一步的好处。

当然,不要对缓冲池进行全面定位,以使服务器开始交换。这会破坏性能(否则,如果没有交换,Linux的OOM杀手将终止mysqld。)

key_buffer_size=512M

如果您不使用MyISAM,则无需为密钥缓冲区分配额外的内存。

可能还有其他调整参数可以带来好处,但由于您对查询或服务器活动一无所知,因此无法猜测它们会是什么。

您最好关注索引和查询设计。

通常,优化自然会以牺牲其他查询为代价来改进某些查询。因此,只有在知道需要优化哪些查询后,才能制定优化策略。