• mysql存储引擎之myisam学习


    myisam存储引擎特点:
    1.不支持事务
    2.表级锁定(更新时锁整个表,其索引机制是表级索引,这虽然可以让锁定的实现成本很小,但是也同时大大降低 了其并发性能)

    3.读写互相阻塞:不仅会在写入的时候阻塞读取,myisam还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读。
    4.只会缓存索引:myisam可以通过key_buffer_size缓存索引,以大大提高访问性能减少磁盘IO,但是这个缓存区只会缓存索引,而不会缓存数据。

    5.读取速度较快,占用资源相对少

    6.不支持外键约束,但支持全文索引

    myisam引擎适用的生产业务场景
    1.不需要事务支持的业务(列如转账就不行,充值付款)

    2.一般为读数据比较多的应用,读写都频繁场景不适合,读多或者写多的都适合
    3.读写并发访问相对较低的业务( 纯读纯写高并发也可以)

    4.数据修改相对较少的业务(阻塞问题)

    5.以读为主的业务

    6.对数据一致性要求不是非常高的业务(不支持事务)
    7.中小型的网站部分业务会用

    myisam引擎调优精要

    1. 设置合适的索引(缓存机制)

    2. 调整读写优先级,根据实际需求确保重要操作更优先执行

    3. 启用延迟插入改善大批量写入性能(降低写入频率,尽可能多条数据一次性写入)

    4. 尽量顺序操作让insert数据都写入到尾部,减少阻塞

    5. 分解大的时间长的操作,降低单个操作的阻塞时间

    6. 降低并发数(减少对mysql访问),某些高并发场景通过应用进行排队队列机制

    7. 对于相对静态(更改不频繁)的数据库数据,充分利用Query Cache或memcached缓存服务可以极大的提高效率
      query_cache_size=2m
      query_cache_limit=1m
      query_cache_min_res_unit=2k

    8. myisam的count只有在全表扫描的时候特别高效,带有其他条件的count都需要进行实际的数据访问。

    9. 可以把主从同步的主库使用innodb,从库使用myisam引擎(不推荐)。

  • 相关阅读:
    CodeForces.1174D.EhabandtheExpectedXORProblem(构造前缀异或和数组)
    HDU-6187.DestroyWalls(最大生成树)
    HDU.6186.CSCource.(前缀和数组和后缀和数组)
    <每日一题>Day 9:POJ-3281.Dining(拆点 + 多源多汇+ 网络流 )
    <每日一题> Day8:CodeForces-996A.Hit the Lottery(贪心)
    最小割 + 网络流变体
    <每日一题> Day7:CodeForces-1166C.A Tale of Two Lands (二分 + 排序)
    <每日一题> Day6:HDU递推专题完结
    <每日一题> Day5:简单递推两题
    POJ-3122.Pie(二分法最大化平均值)
  • 原文地址:https://www.cnblogs.com/lisqiong/p/5666989.html
Copyright © 2020-2023  润新知