mysql优化

对于mysql优化,首先要从最初建表开始,从设计角度选择相应的存储引擎,字段类型包括范式,这是最基本的优化,就比如存储引擎,有两种一种是myisam,另一种是innodb,myisam的查询和添加性能比innodb快,相对的它不支持事务处理和外键,而innodb支持事物和外键等高级功能。然后利用mql自身特性优化,包括有索引,查询缓存,根据情况进行分区分表,先分析索引,索引有主键索引,唯一索引,普通索引,全文索引,前缀索引,还有复合索引等,可以在需要查询的字段上建立索引,建立完索引,会发现查询速度会大幅度减少,当然有时候我们会发现建立完索引,查询速度没有变化,这就要用到一个工具,explain,这个主要用于分析sql语句的执行情况,并不是真实的执行这个sql语句,这个可以查看sql语句是否用到了索引,我们在进行查询的时候要注意的是复合索引遵循最左原则,like查询的时%号在右边才会命中索引,当like查询数据超过表数据的20%,就会变成全文检索了,查询中有or时,两边条件都要有索引才能命中,查询条件是字符串的话需要引起来。再有就是开启查询缓存,查询缓存有个前提条件,就是sql语句要一致,动态数据无法缓存,这个一旦开启,它就会把所有能缓存的全部缓存下来。接着从sql语句开始优化,在mysql中有一个功能叫慢查询日志,这个功能是用于记录sql执行时间超过自己定义的时间,开启慢日志,通过从慢日志查看sql语句执行的时间,从而开始具体优化sql语句,也可以开启profiles机制,还有一种方法,就是进行碎片整理,不知道你有没有发现,我们在对表进行一些delete操作时,数据表的容量还是原来的,没有改变就像我们只是逻辑删除,而没有物理删除,这样也会增加sql的消耗,我们可以执行optimize table 表名这个命令,可以把原来的空间进行释放同时将数据文件整理一下,但是这个也是有点消耗资源,不建议频繁操作,可以制定一个计划,按周或者按月。如果是大型数据,可以进行分区分表这些操作,分区的话就是把一个表分成多个区域,当然这个并不是真的,而是从逻辑上分区,分区有四种存储结构,key,hash,list和range,list和range在减少分区的时候会丢失数据,这是要注意的,还有就是分表了,分表有水平分表和垂直分表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值