java中的接口是类吗
580
2022-06-16
一.数据库服务器配置
CPU:48C
内存:128G
DISK:3.2TSSD
二.CPU的优化
innodb_thread_concurrency=32
表示SQL经过解析后,允许同时有32个线程去innodb引擎取数据,如果超过32个,则需要排队;
值太大会产生热点数据,global锁争用严重,影响性能
三.内存的优化
query_cache_type=0
query_cache_size=0
缓存查询,5.6默认关闭,在应用层实现,比如MC、redis
四.IO的优化
1.innodb_buffer_pool_size=50G
类似SGA,衡量总的IO处理能力上限,一般为物理内存的60%-70%,这里128G部署2个实例,剩下28G分配给OS和mysql连接等使用
2.innodb_io_capacity=20000
每秒后台进程处理IO数据的上限,一般为IO QPS总能力的75%
比如SSD是3W QPS,75%大概是2W,双实例减半,为1W,几个实例除以几
3.innodb_log_files_in_group=4
几个innodb redo log日志组
4.innodb_log_file_size=1000M
redo log日志循化写,生产必须大于1G,
如果太小,那么innodb_buffer_pool_size的数据有可能不能及时写入redo log造成halt等待;查看是否够用?如果value大于0,则提高改参数或者增加日志组
root@master 12:51: [(none)]> show global status like '%log_wait%';
+------------------+-------+ | Variable_name | Value |
+------------------+-------+
| Innodb_log_waits | 0 | +------------------+-------+ 1 row in set (0.00 sec)
root@master 12:54: [(none)]> show global status like '%Innodb_os_log_written%';
+-----------------------+-------+ | Variable_name | Value |
+-----------------------+-------+
| Innodb_os_log_written | 1024 | +-----------------------+-------+ 1 row in set (0.00 sec) #此参数大小可作为设置日志文件size大小参考值
5.innodb_flush_method=O_DIRECT
SSD直接写硬盘,不写硬盘cache,也就是绕过fsync()刷硬盘
6.innodb_max_dirty_pages_pct=50
当脏块达到innodb_buffer_pool_size的50%时,触发检查点,写磁盘
7.innodb_file_per_table=on
一表一文件,可以避免共享表空间的IO竞争
8.innodb_page_size=4k
默认是16K,这里是SSD,写SSD前要擦除,擦除单位是extent,一个extent有128个page组成,16_128 > 4_128 ,效率会更高
9innodb_flush_neighbors=0
SSD设置为0,SAS打开刷新相邻块,随机访问转换为顺序访问
五.连接的优化
可以考虑设置为max_connections或者max_connections*查询同时用到的表个数或者
5.thread_cache_size=512
都是短连接进来容易产生短连接风暴
会话层:事务状态、认证会话
连接层:网络连接、包传输
一个用户 对应 一个session 对应 一个connection
connection - thread:操作系统调用
3000个用户进来使用cache的512个线程,用完就放回去,避免创建、销毁线程的开销
6.wait_timeout=120
指的是app应用连接mysql进行操作完毕后,空闲120秒后断开
7.interactive_timeout=120
指的是mysql client连接mysql进行操作完毕后,空闲120秒后断开
六.数据一致性的优化
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~