MySQL

MySQL数据库优化大全方法汇总

2019-03-26  本文已影响283人  df196223e488

随着数据和负载增加,MySQL数据库会日渐缓慢,性能越来越差,用户体验也随之变差,所以数据库性能优化十分紧迫,云吞铺子分享MySQL数据库优化大全:

MySQL数据库优化

云吞铺子先模拟一下数据库访问流程,然后逐步的优化这些环节,可以从减少数据访问(减少磁盘访问)、返回更少数据(减少网络传输或磁盘访问)、减少交互次数(减少网络传输)、减少服务器CPU开销(减少CPU及内存开销)和利用更多资源(增加资源)几个方面来提升数据库性能。

可以从以下及方面优化MySQL数据库:

一:数据库结构优化

二:优化SQL语句

id from t where num is null

可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

select id from t where num=0

三:分表技术(水平分割、垂直分割)、分区技术

如果遇到大表的情况下,SQL语句优化已经无法继续优化了,我们可以考虑分表和分区,目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。

分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以分布在同一块磁盘上,也可以在不同的机器上。app读写的时候根据事先定义好的规则得到对应的子表名,然后去操作它。

分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。app读写的时候操作的还是大表名字,db自动去组织分区的数据。

四:读写分离

MySQL读写分离可以参考:阿里云MySQL读写分离详解,本文来说说抛开阿里云来实现读写分离的方法:

五:存储过程 [模块化编程,可以提高速度]

存储过程是SQL语句和控制语句的预编译集合,保存在数据库中,可有应用程序调用执行,而且允许用户声明变量、逻辑控制语句及其他强大的编程功能。包含逻辑控制语句和数据操作语句,可以接收参数、输出参数、返回单个或多个结果值及返回值。

使用存储过程的优点:模块化程序设计,只需创建一次,以后即可调用该存储过程任意次;执行速度快,效率高;减少网络流量;具有良好的安全性。

六:对mysql配置优化 [配置最大并发数, 调整缓存大小]

MySQL数据库优化大全方法汇总


MySQL数据库优化

七:MySQL服务器硬件升级

MySQL服务器硬件升级云吞铺子就不多赘述了,也可以使用云数据库,参考:阿里云MySQL云服务器详解

八:定时的去清除不需要的数据,定时进行碎片整理

注意:MySQL碎片整理尽量选择业务不繁忙时清理,一个月清理一次即可。

上一篇 下一篇

猜你喜欢

热点阅读