共计 2610 个字符,预计需要花费 7 分钟才能阅读完成。
以下 List 是我们常见的 MySQL 参数配置,这个参数对提高实例的性能大有裨益。
其中 建议设置值,仅供参考,需要根据自己的业务场景和硬件资源仔细推敲。
参数 | 设置说明 | 建议设置值 |
lower_case_table_names | 大小写敏感:此参数不可以动态修改,必须重启数据库: 0. 表名存储为给定的大小和比较是区分大小写的 1. 表名存储在磁盘是小写的,但是比较的时候是不区分大小写 2. 表名存储为给定的大小写但是比较的时候是小写的 | 0 |
max_connections | 最大链接数据 | 2000 |
max_connect_errors | 某一客户端链接失败的情况下尝试连接 MySQL 服务器最大尝试次数 | 100 |
sort_buffer_size | 排序缓冲增加 sort_buffer_size 值可以加速 ORDER BY 或 GROUP BY 操作 想要加快 ORDER BY 的速度,首先看是否可以让 MySQL 使用索引而不是额外的排序阶段 | 8388608 |
join_buffer_size | 联合查询缓冲此缓冲被使用来优化全联接 (FULL JOINS 不带索引的联接), 类似的联接在极大多数情况下有非常糟糕的性能表现, 但是将此值设大能够减轻性能影响。如果全局大小比使用它的大多数查询都大,那么内存分配时就会导致性能下降 | 8388608 |
tmp_table_size | 规定了内部内存临时表的最大值,每个线程都要分配。这两个参数是 mysql 对临时表的大小控制,tmp_table_size 控制内存临时表的最大值, 超过限值后就往硬盘写,写的位置由变量 tmpdir 决定;max_heap_table_size 用户可以创建的内存表 (memory table) 的大小. 这个值用来计算内存表的最大行数值。 | 67108864 |
max_heap_table_size | 67108864 | |
innodb_buffer_pool_size | innodb 缓冲池,用来缓存 InnoDB 索引页面、Undo 页面以及一些其它辅助数据。 | 一般为物理内存的 75%-85% |
innodb_buffer_pool_instances | 将 InnoDB 缓冲池划分为多个实例适当地增加该参数,可以提升 InnoDB 的并发性能。通过这个参数,把原来一整块 Buffer Pool 分割为多块内存空间,每个空间独立管理自己的空闲链表、刷新链表、LRU 及其它数据结构。 | |
innodb_buffer_pool_dump_pct | InnoDB 缓存池预热恢复 buffer pool 中百分比数据 | 40 |
innodb_flush_log_at_trx_commit | 0:log buffer 每秒一次写入 log file,并且 log file 的 flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。 1:每次事务提交时 MySQL 都会把 log buffer 的数据写入 log file,并且 flush(刷到磁盘)中去,该模式为系统默认。 2:每次事务提交时 MySQL 都会把 log buffer 的数据写入 log file,但是 flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL 会每秒执行一次 flush(刷到磁盘)操作 | 1 |
slow_query_log | 开启慢查询日志,默认关闭. | 1 |
log_slow_slave_statements | 记录由 Slave 所产生的慢查询,默认值 OFF。 | 1 |
log_queries_not_using_indexes | 将没有使用索引的 SQL 语句记录到慢查询日志文件中,默认值 OFF。 | 1 |
log_throttle_queries_not_using_indexes | 来限制每分钟可以写入慢查询日志的数量。 | 10 |
long_query_time | 慢查询超时时间,默认 10 秒修改为 1 秒。 | 1 |
thread_cache_size | 重用保存在缓存中线程的数量:如果 Threads_created 值过大 MySQL 服务器一直在创建线程,比较耗资源,可以适当增加配置文件中 thread_cache_size 值。缓存命中率:Thread_Cache_Hit = (Connections – Threads_created) / Connections * 100%; | 256 |
innodb_io_capacity | InnoDB 有后台线程在不断地做 Flush 操作,影响这个操作频率的就是这个 innodb_io_capacity 参数。如果碰到系统因为后台 Flush 操作而产生周期性性能降低的情况,特别是在使用 SSD 设备的时候,可以适当提高这个参数的值,以加速 Flush 的频率。(但 For systems with individual 5400 RPM or 7200 RPM drives, you might lower the value to the former default of 100.) | 32768(SSD 配置) |
innodb_thread_concurrency | 在并发量大的实例上,增加这个值,可以降低 InnoDB 在并发线程之间切换的花销,以增加系统的并发吞吐量。 | 32 |
slave_parallel_workers | 在进行多线程复制的时候,如果设置此参数为非零值,则可以打开多线程并发执行回放日志的操作,以提升 Slave 的同步性能。 | 16 |
sync_binlog | MySQL 同步 Binlog 到磁盘的方式。1 最安全,但性能较差,每一个事务提交时,MySQL 都会把 Binlog 刷新到磁盘中;0 性能最好,但不安全。事务提交时,MySQL 将 Binlog 信息写入到 Binlog 文件(OS Cache)中,但是 MySQL 不控制 Binlog 的刷盘操作,由文件系统自己控制其缓存的刷新 | 0 |
tx_isolation | 设置 MySQL 的隔离级别,读未提交(read-uncommitted);不可重复读(read-committed);可重复读(repeatable-read);串行化(serializable)。这四种级别越来越严格。 | REPEATABLE-READ |
binlog_order_commits | 事务在提交的时候写入 Binlog 的顺序。这是把双刃剑,如果打开可以保证事务都以相同的顺序写入二进制文件,如果关闭则可以提升性能。需要根据实际情况决定。 | on |
max_allowed_packet | MySQL 发送和接受的最大数据包大小,设置过小会导致数据包分裂情况严重。 | 134217728 |
thread_stack | 每个连接线程被创建时,MySQL 给它分配的内存大小。 | 262144 |
:
正文完
星哥玩云-微信公众号