《深入精通Mysql(八)》系列之十年架构师从架构层面进行Mysql性能优化
1、优化思路
2、连接——配置优化
show variables like
'max_connections'
;
--
修改最大连接数, 当有多个应用连接的时候
--
及时释放不活动的连接, 注意不要释放连接池还在使用的连接 show global variables like
'wait_timeout'
;
问题:CPU 是怎么同时执行远远超过它的核数大小的任务的? 答:时间片。上下文切换。
除了合理设置服务端的连接数和客户端的连接池大小之外,我们还有哪些减少客户端跟数据库服务端的连接数的方案呢?
3 缓存——架构优化
为了减少单台数据库服务器的读写压力,在架构层面我们还可以做其他哪些优化措施?
所以,基于主从复制的原理,我们需要弄明白,主从复制到底慢在哪里?
insert into user_comments
(
10000009
,
'nice'
)
;
update user_comments set content
=
'very good'
where id
=
10000009
;
delete from user_comments where id
=
10000009
;
怎么解决这个问题呢?怎么减少主从复制的延迟?
如果要减少延迟,是不是可以等待全部从库的事务执行完毕,才返回给客户端呢?
有没有更好的办法呢?既减少 slave 写入的延迟,又不会明显增加 master 返回给客户端的时间?
半同步复制是什么样的呢?
cd /usr/lib64/mysql/plugin/
--
主库执行 INSTALL PLUGIN rpl_semi_sync_master SONAME
'semisync_master.so'
;
set global rpl_semi_sync_master_enabled
=
1
;
show variables like
'%semi_sync%'
;
--
从库执行 INSTALL PLUGIN rpl_semi_sync_slave SONAME
'semisync_slave.so'
;
set global rpl_semi_sync_slave_enabled
=
1
;
show global variables like
'%semi%'
;
show global variables like 'gtid_mode';
3.3 分库分表
3.4 高可用方案
总结一下:
以上是架构层面的优化,可以用缓存,主从,分库分表。
长按二维码识别
