龙空技术网

真实客户数据库优化及数据库读写分离实施方案

架构师聊技术 212

前言:

现在同学们对“php索表”大体比较关切,小伙伴们都需要分析一些“php索表”的相关内容。那么小编也在网上汇集了一些对于“php索表””的相关知识,希望姐妹们能喜欢,姐妹们快快来学习一下吧!

随着监控系统的不间断运行,数据库中数据量也随之增加,数据库出现查询缓慢、锁等待情况,因此需要对数据库进行优化,提高数据库性能,加快查询速度。

版本

操作

描述

人员

时间

V1.0

新增

文档编写

郭佳明

2021/12/15

V2.0

新增

文档优化

陈壹

2021/12/20

V2.5

完善

文档完善

刘志虎

2021/12/27

技术方案1. 关闭AHI

通过对数据库存储引擎信息的查询,发现Innodb等待次数非常高

注:第一列是引擎名称 第二类是索类型加代码文件行数 第三个是等待次数

通过翻看mysql 源码(5.7.33):\storage\innobase\btr\btr0sea.cc,发现是跟自适应哈希索引(Adaptive Hash Index,AHI)相关的函数

随后翻阅官方文档,官方文档提到这在高负载工作的情况下,可能是一个争用点。

结合上金所这边的实际情况,需要将AHI进行关闭。

2. 读写分离从目前的数据量上,SQL本身已经很难进行优化,通过对慢Sql日志分析,发现慢Sql中针对历史数据的查询都是Range级别索引情况如下:字段如下:注:其中ns字段是微秒时间,可以忽略。综合来说:表已经物尽其用,其本身很难有改进的空间,因此需要进行数据库读写分离,提高数据库性能。读写分离流程实施步骤1. 关闭AHI步骤7.211.2.12,7.211.2.13登录数据库:

Mysql -uroot -pp@ssw0rd
执行以下Sql命令:
set global innodb_adaptive_hash_index=off
2. 读写分离步骤登陆7.211.2.14,7.211.2.15

用户:sysmon

进入db.php所在目录,这里有两个目录分别存放了db.php文件所有都要更改:

cd /cmp/nginx/html/lwjk_v3/configmv db.php db.php.bf   //备份cd /cmp/nginx/html/lwjk_v3/localmv db.php db.php.bf.   //备份
替换db.php文件更新内容,添加了读写分离的配置
cd /cmp/nginx/html/lwjk_v3/configrz db.php       //上传新db.php文件ll  //查看权限,如果权限和老的db.php文件不相同需更改权限与授权组和授权主cd /cmp/nginx/html/lwjk_v3/localrz db.php       //上传新db.php文件ll  //查看权限,如果权限和老的db.php文件不相同需更改权限与授权组和授权主

注:上述的配置指定了主从的相关设置。 从库将被用来执行读操作,而主库将被用来执行写操作,这样读写分离将通过上述配置自动地完成。

3 版本回退7.211.2.12,7.211.2.13登录数据库:

 mysql -uroot -pp@ssw0rd 
执行以下sql命令,开启AHI:
set global innodb_adaptive_hash_index=no
登陆web主机,恢复db.php文件

用户:sysmon

ip:7.211.2.14,7.211.2.15

恢复config和local目录下的db.php文件:

cd /cmp/nginx/html/lwjk_3/configrm -f db.php   //删除更改的db.php文件mv db.php.bf db.php  //恢复原有db.php文件cd /cmp/nginx/html/lwjk_v3/localrm -f db.php   //删除更改的db.php文件mv db.php.bf db.php  //恢复原有db.php文件
由于客户哪边数据量大的表主要是监控系统,监控平台是客户购买的第三方监控系统,监控服务商说可以通过配置实现,但这个方式在非不得已的情况下不建议使用,推荐使用通过中间件的方式,对业务层透明,业务实现不考虑底层的数据存储。

喜欢的朋友记得给个关注~

标签: #php索表 #phpcdll