zoukankan      html  css  js  c++  java
  • MYSQL性能优化(2)

    Insert语句优化

     1.  多行并为一个语句

       insert into table values (行1),(行2),...........

        2. 使用中间内存队列,

           逻辑是立马执行插入,其他数据放入内存队列

      insert delayed ( low_priority 刚好相反 )

       3. 批量插入,可以使用bulk_insert_buffer_size变量值提高速度(仅Myisam)

       4. 从文件读入表,load data infile ,比插入快20倍

       5. replace 替代 insert

       6. 特殊情况,使用ignore关键字,忽略重复记录

    group by语句优化

      group by col1,col2 会排序,显示指定order by col1,col2 会加速,可以order by NULL 来取消排序加速

    order by语句优化

      索引优化order by,where 和 order by 使用相同索引,order by 的顺序要和索引相同,且order by 的字段 都是升序或者降序

    使用 join来优化,

        原理是mysql 不在内存中建立临时表来完成逻辑上的操作

    优化or

        or中的所有条件必须都有索引 才会被优化

    insert update delete 优先级(仅Myisam)

      分析业务需求,查询为主,更新为主,来调整优先级

    使用SQL提示(指定mysql优化方向)

      1. select sql_buffer_results .. 当查询结果需要很久才能传给客户端时,会生成临时结果集,然后释放锁定

      2. select * from table USE INDEX(index1,index2) 指定索引查找范围

      3.select * from table  IGNORE INDEX(index1,index2) 排除索引范围

      4.                                    FROM  INDEX(index1) 强制使用

      

     其他

    1.使用持久的连接 数据库 来避免连接开销

    2.经常检查所有的查询确实使用了必要的索引

    3.避免在频繁的更新的表上执行复杂的select查询,避免与锁定表有关的由于读,写冲突发生的问题

    4.Myisam表 如果没有删除操作,查询期间不会阻塞插入操作,插入与查询可以并行。

       对于确实需要执行删除的表,在空闲时间批量删除,避免阻塞

    5.尽量设置默认值,减少语法分析

    6.对于经常访问的可以重构的数据使用内存表

    7.多机

    8.表尽量不要使用自增长变量,高并发下 性能影响比较大,推荐应用自己实现自增长

      

  • 相关阅读:
    itextpd f生成 pdf 文件
    java word文档 转 html文件
    Activiti之 Exclusive Gateway
    activiti入门
    lucene分词器与搜索
    这款小程序 能让你和孙悟空一样 可以七十二变
    西游记中神兽谛听的能力 这款小程序也有
    想拥有一款钢铁侠Jarvis管家的软件吗?
    微信小程序开发填坑指南V1
    NaviSoft31.源码开发完成
  • 原文地址:https://www.cnblogs.com/sofard/p/9915865.html
Copyright © 2011-2022 走看看