您的位置:首页 > 数据库 > MySQL

[置顶] 【mysql 性能优化篇】优化数据库结构

2017-12-05 16:19 260 查看
方法1:

将字段很多的表分解为多个表。

通过这种分解,可以提高表的查询效率。对于字段很多,且有些字段使用不频繁的表,可以通过这种分解的方式优化数据库的性能。

方法2:

增加中间表

对于经常需要联合查询的表,可以建立中间表 提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。

方法3:

增加冗余字段

合理加入冗余字段可以增加查询的速度。从数据库性能来看,为了提高查询速度而增加少量的冗余 大部分是可以接受的。是否增加冗余提高数据库性能,这要根据实际需求综合分析。

方法4:

优化插入记录的速度

4.1 禁止索引

插入记录时,mysql会根据表的索引对插入的记录建立索引。如果插入大量数据,建立索引会降低插入记录的速度,为了解决这种问题,可以在插入记录之前,仅用索引,数据插入完毕后再开启索引。

禁止索引

alter table table_name disable keys


开启索引

alter table table_name enable keys


4.2、禁止唯一性

插入数据时,mysql会对插入的记录进行唯一性校验,这种唯一性校验也会降低插入记录的速度,为了降低这种情况对查询速度的影响,我们先禁止唯一性检查。

禁止唯一性检查语句

set unique_checks=0;


开启唯一性检查语句

set unique_checks=1;


4.3、使用批量插入。

插入多条记录时,可以使用一条 insert 语句插入一条记录,也可以使用一条insert语句插入多条。后者的速度比前者的速度要快。

4.4、使用load data infile 批量导入

当需要批量导入数据时,如果能有load data infile 批量导入,就尽量使用。因为 load data infile 语句 导入数据比insert 语句快。

禁用外键检查语句

set foreign_key_checks=0;


恢复对外键的检查语句

set foreign_key_checks=1;


禁止自动提交

set autocommit=0;


恢复自动提交

set aotucommit=1;


方法5:

分析表、检查表、优化表

分析表 :主要是分析关键字的分布

检查表:主要是检查表是否存在错误、

优化表:主要是消除删除、更新造成的空间浪费。

分析表语句:

ANALYZE TABLE t_order_info


Table   Op  Msg_type    Msg_text
cgjr.t_order_info   analyze status  OK


检查表语句:

CHECK TABLE t_order_info


优化表:

OPTIMIZE TABLE t_user_info
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: