mysql-优化班学习-4-20170518-my.cnf的配置解释-2
mysql-优化班学习-4-20170518
prompt="\\u@HOSTNAME \\R:\\m:\\s [\\d]> "
no-auto-rehash[mysql]
prompt="\\u@HOSTNAME \\R:\\m:\\s [\\d]> "
no-auto-rehash
【群主】叶金荣(4700963) 20:39:35
[mysql]
prompt="\\u@HOSTNAME \\R:\\m:\\s [\\d]> "
no-auto-rehash
【群主】叶金荣(4700963) 20:39:45
prompt 提示符
【群主】叶金荣(4700963) 20:40:00
yejr@imysql.com [sys]>
user = mysql
port = PORT
basedir = BASEDIR
datadir = DATADIR
socket = SOCKET
pid-file = HOSTNAME.pid
character-set-server = utf8mb4 //现在5.7建议使用这个配置
skip_name_resolve = 1 //不会读/etc/hosts文件,加快客户端连接的速度
open_files_limit = 65535 //允许打开的文件数
back_log = 1024 //server端可以暂缓的连接数配置数,对性能影响不大
max_connections = MAX_CONN //主要看设备的能力,比如设备可以承载1000个连接,建议设置80% 即800
max_connect_errors = 1000000 //全局生效的,某个唯一的客户端连接超过这个数量的时候会把它屏蔽掉
join_buffer_size = JOIN_BUF_SIZE //bk使用
thread_cache_size = THREAD_CACHE //连接缓存,每个客户端连接进来后,当前没有空闲的thread cache的话需要新创建个线程,如果有富余的话,直接从这个里面取
read_rnd_buffer_size = READ_RND_BUFFER // 用来提高随机读 MRR
query_cache_type = 0
wait_timeout = 600
max_heap_table_size = TMP_TABLE_SIZE 一般设置200Mb以内即可
sync_binlog = 1 记住即可
innodb_flush_log_at_trx_commit = 1 记住即可
expire_logs_days = 7 自动清除7天前的binlog
master_info_repository = TABLE
relay_log_info_repository = TABLE
gtid_mode = on
默认一定要打开gtid
relay-log-purge = 1 自动删除过期的relaylog
innodb_thread_concurrency = 0 不控制并发线程数
# 一般配普通SSD盘的话,可以调整到 10000 - 20000
# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_open_files = 65535
在老叶茶馆搜索open_files_limits
Aborted_clients,由于客户端没有正确关闭连接导致客户端终止而中断的连接数。
Created_tmp_disk_tables,服务器执行语句时在硬盘上自动创建的临时表的数量。是指在排序时,内存不够 用(tmp_table_size 小于需要排序的结果集),所以需要创建基于磁盘的临时表进 行排序。
建议:Created_tmp_disk_tables/(Created_tmp_disk_tables+Created_tmp_tables)* 100% > 10%的话,就需要注意适当 高 tmp_table_size 的大小 但是不能设置太大,因为它是每个 session 都会分配的,可能会导致 OOM
Handler_read_rnd
根据固定位置读一行的请求数。如果你正执行大量查询并需要对结果进行排序该 值较高,说明可能使用了大量需要 MySQL 扫 整个表的查询或没有正确使用索 引。
例如:select * from t limit 1000,1;
或者:select * from t order by non_key_col limit 100,1;
Handler_read_rnd_next
例如:select * from t order by non_key_col limit 100;
【群主】叶金荣(4700963) 21:45:24
Handler_read_key
【群主】叶金荣(4700963) 21:45:28
Handler_read_last
【群主】叶金荣(4700963) 21:45:32
Handler_read_next
【群主】叶金荣(4700963) 21:45:35
Handler_read_prev
一般情况,通过后台向 Innodb buffer pool 写。但是,如果需要读或创建页,并且 没有干净的页可用,则它还需要先等待页面清空。该计数器对等待实例进行记数。 如果已经适当设置 Innodb buffer pool 大小,该值应小。
我们必须等待的时间,因为日志缓冲区太小,我们在继续前必须先等待对它清空。
当前等待的待锁定的行数。
| Table_open_cache_misses | 115
没有使用索引的联接的数量。如果该值不为 0,你应仔细检查表的索引。
opened-tables,表示历史上总共打开过的table数量
mysql> show processlist;
+----------+------+-----------------+--------------------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----------+------+-----------------+--------------------------+---------+------+-------+------------------+
| 40873514 | root | localhost | NULL | Query | 0 | init | show processlist |
+----------+------+-----------------+--------------------------+---------+------+-------+------------------+
614 rows in set (0.01 sec)
mysql> pager cat - | grep -v Sleep
PAGER set to 'cat - | grep -v Sleep'
mysql> pager cat - | grep -v Sleep | sort -rn -k 12 | head -n 20
PAGER set to 'cat - | grep -v Sleep | sort -rn -k 12 | head -n 20'
mysql> show processlist;
| Id | User | Host | db | Command | Time | State | Info |
| 40873514 | root | localhost | NULL | Query | 0 | init | show processlist |
+----------+------+-----------------+--------------------------+---------+------+-------+------------------+
+----------+------+-----------------+--------------------------+---------+------+-------+------------------+
+----------+------+-----------------+--------------------------+---------+------+-------+------------------+
614 rows in set (0.00 sec)