• MySQL优化


    1.1配置文件的优化

    参数设置贵在合适,而不是越高越好,看你的服务器性能结合压力测试选择

    设置缓存表大小

    table_cache = 1024

    物理内存越大,设置就越大,默认为2402,调到512-1024最佳

    该设置可以为连接用户提高查询速度

    设置cpu数量

    innodb_thread_concurrency = 8

    你的服务器CPU有几个就设置为几,建议用默认一般为8

    调整读缓冲区大小

    read_buffer_size = 4M

    如果对表的顺序扫描请求非常频繁,并且扫描还太慢,可以通过增加这个属性提高性能

    设置单个查询能使用的缓存大小

    query_cache_limit = 4M

    如果查询结果却是量级较大,可以考虑调高这个属性

    调整索引和行数据缓冲innodb

    innodb_buffer_pool_size = 105M

    innodb使用缓冲池来缓存索引和行数据,该值设置的越大,则磁盘IO越少,一般将该值设为物理内存的80%

    设置查询缓存大小

    query_chcae_size = 64M

    这个属性用于缓存SELECT查询结果

    如果有许多返回相同查询结果的SELECT查询,并且很少改变表

    可以设置该属性大于0,可以极大改善查询效率

    1.2 SQL语句的优化

    SQL语句主要优化查询,而查询主要目的是要快,那么就得减少IO次数,多多利用索引

    • 对条件/排序查询进行优化,应避免全表扫描,在whereorder by涉及的列上建立索引

    • 避免在where子句中对字段进行NULL值判断,虽然建表时NULL是默认值,但大多数的时候应该使用NOT NULL去判断,使用一些特殊的值如0、-1作为默认值,因为含有NULL的列在符合索引中是无效的
    • 应不命中索引尽量避免在子句中使用!=<>操作符,这俩操作符不能使用索引,而以下操作可以使用索引:<、<=、=、>、>=、BETWEEN、IN
    • 应尽量避免在where子句中使用or来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,可以使用UNION合并查询
    • innot in也要慎用,否则会导致全表扫描,对于连续的数值,能用between就不要用in
    • 避免在where子句中对字段进行函数、运算、类型转换等操作,这样不会利用索引
    • 一个表的索引叔最好不要超过6个,虽然一张表支持创建最多16个索引,但是若太多索引则会降低了insertupdate的效率
    • 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销,并且还要注意避免使用时类型转换
    • 避免向客户端返回大量数据,尤其这数据里还有很多是无用的数据,解析麻烦,渲染慢,传输费时
    • IN后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数

    1.3表结构的优化

    • 给字段选取最合适的数据类型
    • 数据类型的宽度尽可能的小
    • 允许部分数据冗余,可以节省连表查询的次数
    • 字段要尽可能的设置为not null,特别是使用了索引的字段

    1.4 索引的优化

    全职匹配心上人(这是基本原则)、最左前缀要遵行(联合索引一般都围绕最左前缀优化)

    带头大哥活才行(联合索引从最左边字段开始使用)、中间兄弟规矩行(不能跳过中间地段,跳过后索引无效)

    索引列上少计算(索引列上尽量不要进行计算)范围之后全完蛋(where后面使用范围查询的之后的索引无效)

    like百分最右写(%号写最右边,写左边会导致索引失效)、覆盖索引别写星(尽量避免**select * 这样的语句,能写索引列最好)

    空值不等还有or,索引失效最无情(is null、is not null、!=、<>、or会导致索引无效)

  • 相关阅读:
    沈阳集训day2
    ac自动机
    2018沈阳集训day1
    洛谷P1875 佳佳的魔法药水
    洛谷P1941 飞扬的小鸟
    Noip2016day2
    1123: [POI2008]BLO
    1718: [Usaco2006 Jan] Redundant Paths 分离的路径
    P3119 [USACO15JAN]草鉴定Grass Cownoisseur
    [LeetCode] Clone Graph
  • 原文地址:https://www.cnblogs.com/u-damowang1/p/13749781.html
Copyright © 2020-2023  润新知