前言:
现在同学们对“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=off2. 读写分离步骤登陆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文件由于客户哪边数据量大的表主要是监控系统,监控平台是客户购买的第三方监控系统,监控服务商说可以通过配置实现,但这个方式在非不得已的情况下不建议使用,推荐使用通过中间件的方式,对业务层透明,业务实现不考虑底层的数据存储。
喜欢的朋友记得给个关注~