title | date | tags |
---|---|---|
MySQL性能优化 |
2020-07-16 03:53:28 -0700 |
查看索引:
mysql> show index from dynamic_person;
线上说,mysql count 查询太慢,
找一个比较简单的带索引的字段:
mysql> select count(type) from dynamic_person;
count 带索引的字段会比较快。这次花费了 134 秒。
服务器内存是够用的,想加大 mysql 的内存。
mysql> show variables like 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+
1 row in set (0.00 sec)
134217728 = 128 * 1024 * 1024
128 MB,比较小,服务器有 256 GB,
我想设置为 128 GB。即 137438951472
mysql> set global innodb_buffer_pool_size=137438951472;
mysql 是使用 docker 部署的,查看内存:
$ docker stats
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
54542b63f 16.09% 19.2 GiB / 251.7 GiB 7.63% 1.99 GB / 808 MB 0 B / 2.43 TB 69
设置后,MEM USAGE
会缓慢增长。
再次查询,发现性能提高了,再次查询,用了 13 秒,速度提高了 10 倍。
max_connections = 1024
slow_query_log = ON
long_query_time = 5
max_allowed_packet = 104857600