percona参数设置标准
percona参数设置
- 首先为参数设置中的对应符号,函数设置
| 符号,函数 | 解释 |
|---|---|
| ceil() | 向上取整 |
| HTC | CPU超线程数(HyperThread Count) |
| IC | 一个主机上的MySQL实例个数(Instance Count) |
| IC | 一个主机上的MySQL实例个数(Instance Count) |
| PDC | mydata所在的逻辑盘对应的物理盘个数(Physical Disk Count) |
| ERSV | innodb_extra_rsegments值大小(innodb_Extra_RSegments Value) |
| NULL | 对应的参数不设置在my.cnf,也就是说使用该参数的默认值 |
- 在my.cnf中可以设置的参数如下
# innodb plugin innodb_read_io_threads=1 innodb_write_io_threads=4 innodb_io_capacity=10000 innodb_file_format=barracuda innodb_file_format_check=ON innodb_strict_mode=1
innodb_adaptive_flushing=false
# percona innodb_page_size=8k innodb_extra_rsegments=8 innodb_use_purge_thread=4 innodb_stats_update_need_lock=0 innodb_fast_checksum=1 log_slow_verbosity=full userstat_running=1 enable_query_response_time_stats=1 # percona For SSD #innodb_adaptive_checkpoint=3 innodb_flush_neighbor_pages=0
| 参数名 | SAS (默认为Raid 1+0) 应该设置值 | SSD (默认为Raid 5) 应该设置值 | Fusion io (采用flashcache) 应该设置值 | 备注 |
|---|---|---|---|---|
| innodb_read_io_threads | 1 | 1 | 1 | 预读线程只需要设置为1 |
| innodb_write_io_threads | ceil(HTC / IC) | ceil(HTC / IC) | ceil(HTC / IC) | 写线程设置为线程数除以实例个数 |
| innodb_io_capacity | ceil((PDC * 200 ) / IC ) | ceil(((PDC – 1) * 2000 ) / IC ) | ceil(40000 / IC) | io_capacity主要跟机器的IO性能有关。SAS一块盘写能力假设为200,SSD一块盘假设为2000,fusion io假设为40000。 |
| innodb_file_format | barracuda | barracuda | barracuda | percona默认文件格式为barracuda |
| innodb_file_format_check | ON | ON | ON | MySQL使用barracuda需要在启动的时候检查文件格式为innodb_file_format |
| innodb_strict_mode=1 | 1 | 1 | 1 | 严格检查文件格式,如果有文件格式高于innodb_file_format,实例不能启动 |
| innodb_page_size=8k | 8k | 8k | 8k | MySQL文件页大小默认使用8k |
| innodb_extra_rsegments=8 | ceil(HTC / IC) | ceil(HTC / IC) | ceil(HTC / IC) | 额外的回滚段个数设置为CPU超线程数除以MySQL实例个数 |
| innodb_use_purge_thread=4 | ceil(ERSV / 2) | ceil(ERSV / 2) | ceil(ERSV / 2) | purge线程数设置为额外的回滚段个数的一半 |
| innodb_stats_update_need_lock=0 | 0 | 0 | 0 | 取消更新状态信息时的锁操作 |
| innodb_fast_checksum=1 | 1 | 1 | 1 | 使用percona的更快的checksum算法,其实是不计算checksum |
| log_slow_verbosity=full | full | full | full | 详细记录慢查 |
| userstat_running=1 | 1 | 1 | 1 | 记录用户统计信息 |
| enable_query_response_time_stats=1 | 1 | 1 | 1 | 记录SQL响应时间信息 |
| innodb_adaptive_checkpoint=3 | NULL | if(IC>4) then NULL; else 3; | if(IC>4) then NULL; else 3; | SAS盘不设置该参数;SSD和fusion io的如果MySQL实例在4个已上,担心0.1秒的flush频率太高对主机影响太大,不设置,采用默认值,如果实例数在4个或者4个以下,设置为3。 |
| innodb_flush_neighbor_pages=0 | NULL | 0 | 0 | 对随机写不敏感的SSD和fusion io设置为不刷写邻居页,对SAS不设置,采用默认值 |
| innodb_adaptive_flushing=false | false | false | false | 不使用innodb的自适应刷新算法 |