MySQL数据库优化

数据库瓶颈的主要原因


1) 数据库设计缺陷;(表空间设计、数据库表设计、数据库存储过程设计,字段设计不合理)
2) 数据库配置缺陷(连接数配置,资源分配设计)
3) 数据库架构缺陷(选择了不合适的数据库管理系统,硬件架构不合理,硬件配置过低)
4) SQL语句设计不合理
5) 数据库索引建立不合理

优化方案


1) 基于应用性能设计数据库,保证合理的表空间,数据回滚,确定数据库表之间的逻辑关系,确认是单表还是多表,建立合理的主外键关系,注意字段类型设计、注意Null值。
2) 关注连接数设计、关注数据库资源调度
3) 配置足够的硬件要求,考虑CPU、内存、磁盘IO,考虑数据库集群;注意选择合适的数据库管理系统
4) 优化SQL
5) 优化索引

优化数据库对象


优化表的数据类型


在MySQL中,可以使用函数PROCEDURE ANALYSE()对当前应用的表进行分析,该函数可以对数据表中列的数据类型提出优化建议,用户可以根据应用的实际情况酌情考虑是否实施优化。
以下是函数PROCEDURE ANALYSE的使用方法。
SELECT * FROM tb1_name PROCEDURE ANALYSE()
SELECT * FROM tb1_name PROCEDURE ANALYSE(16,256)
以上第二个语句告诉PROCEDURE ANALYSE不要为那些包含的值多于16个或者256字节的ENUM类型提出建议。

通过拆分提高表的访问效率


第一种方法是垂直拆分,即把主码和一些列放到一个表中,然后把主码和另外的列放在另外一个表中。这种方法适用于一个表中某些列比较常用,而另外一些列不常用。其优点是可以使得数据行变小,一个数据页能存放更多的数据,在查询时就会减少IO次数。缺点是需要管理冗余列,查询所有数据需要联合操作。

第二种方法是水平拆分,即根据一列或者多列数据的值把数据行放到两个独立的表中。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值