MySQL优化

作者: camellia_halo_ | 来源:发表于2018-05-07 21:51 被阅读114次

    Mysql优化方向:

    1.存储层(数据):

    构建良好的数据结构

    2.设计层(单台服务器)

    表结构的设计,表的引擎的选择,字段的索引的选择

    3.架构层(多台服务器)

    多台服务器协同工作的时候的一种架构!主从服务器,一主多从的实现!

    主服务器,负责我们的写操作。从服务器就可以实现我们的读操作!

    4.SQL语句层

    写出一个继符合业务的,又能在性能上有所要求的SQL语句。

    使用memcache redis等进行查询缓存,减少访问mysql次数,提高性能。

    1.存储层:

    合理的字段选择,会提升SQL语句查询的性能,也能节约我们的空间。空间节约了就会让IO     一次性读取数据量更大,提升性能。尽可能的不要将字段设置为null。

    数据类型的选取:选择类型的时候,尽量是选择最小的类型,就能够把字段所有的范围包含进去的。

    2.设计层:

    ①分区与分表:加快SQL语句的查询。

    当表数据达到一定的数量级时。SQL语句的查询会非常的慢。

    如何解决,需要把数据拆分到不同的表里面去。这个时候,就要使用分区或者是分表的技术

    mysql服务器帮助实现的数据分区与分表功能 就是分区。分区的方式有很多,比如key分区,list分区,hash分区,range分区。

    分表是程序员实现的自己拆表,把相同的数据存储到不同的表里。分表的方法有水平分表和垂直分表,水平分表可以减少每张表的数据量,垂直分表可以降低表的复杂度和字段的数目,从而达到优化目的。

    ②关于表的引擎的正确选择:

    MyISAM适合于一些需要大量查询的应用,但是对于大量写操作的支持不是很好。甚至一个update语句就会进行锁表操作,这时读取这张表的所有进程都无法进行操作直至写操作完成。另外MyISAM对于SELECT  COUNT(*)这类的计算是超快无比的。InnoDB 的趋势会是一个非常复杂的存储引擎,对于一些小的应用,它会比 MyISAM 还慢。它支持“行锁” ,于是在写操作比较多的时候,会更优秀。并且,他还支持更多的高级应用,比如:事务。

    MyISAM是MYSQL5.5版本以前默认的存储引擎,基于传统的ISAM类型,支持B-Tree,全文检索,但是不是事务安全的,而且不支持外键。不具有原子性。支持锁表。

    InnoDB是事务型引擎,支持ACID事务(实现4种事务隔离机制)、回滚、崩溃恢复能力、行锁。以及提供与Oracle一致的不加锁的读取方式。InnoDB存储它的表和索引在一个表空间中,表空间可以包含多个文件。

    两者主要区别:

    myisam是支持表锁,innodb是支持行锁

    myisam是不支持事务,innodb是支持事务的

    myisam是支持地理空间索引,innodb是在5.6.2版本之上才支持

    myisam是支持压缩的,innodb是不支持压缩

    myisam是支持全文索引的,innodb是不支持全文索引

    ③字段的索引选择:

    索引是排过序数据,索引会让我们在遍历的时候,少遍历很多数据,所以会加速我们的查询。为搜索字段建立索引。为每一张表建立主键id。

    合理设计表的三种索引,可以大大提高查询效率,减少全表扫描情况的发生。

    索引的选择:字段里面不重复的值的总数/字段值的总数>0.4原则。重复值太多的字段,就不适合做索引。

    但是要注意,我们在使用范围查询的时候,要不要使用索引,不是我们决定的,还是我们的mysql服务器决定。它认为使用索引更快,就会使用索引。如果它认为使用索引不快,它就会快表扫描。

    3.SQL语句层:

    myisam表在使用统计的时候,直接使用count(*)就好了。因为我们myisam表的最后面有一个隐藏的值就是我们表的数量。你使用count(*)其实就是把这个值给取出来。

    innodb表在使用统计的时候,直接使用count(字段名)就好了,各种说明都说的不适合使用*。但是个人测试数据量在200W的时候,使用*比字段名要快一些!!

    4.架构层:

    mysql服务器抗压能力有限,当并发数量较高时,可以实现主从服务器的架构来分担压力。

    主服务器专门接受修改与写的请求,从服务器专门接受查询的请求。主服务器的数据变更时也会同步到从服务器,保证主从服务器的数据是相同的,实现读写分离。

    相关文章

      网友评论

      本文标题:MySQL优化

      本文链接:https://www.haomeiwen.com/subject/qqrbrftx.html