• mysql中有多种存储引擎,每种引擎都有自己的特色


    mysql中有多种存储引擎,每种引擎都有自己的特色。

    用途: MyISAM:快读,
    Memory:内存数据,
    InnoDB:完整的事务支持 锁: MyISAM:全表锁定,
    Memory:全表锁定,
    InnoDB:多种隔离级别的行锁 持久性:MyISAM:基于表恢复,
    Memory:无磁盘I
    /O,无可持久性,
    InnoDB:基于日志恢复 事务类型:MyISAM:不支持,
    Memory:不支持,
    InnoDB:支持 支持索引类型:MyISAM:B
    -tree/FullText/R-tree,
    Memory:Hash/B-tree,
    InnoDB:Hash/B-tree MyISAM注重性能,InnoDB注重事务,一般使用MyISAM类的表做非事务型的业务,最新的mysql建表默认都 是InnoDB类型的。MyISAM在高并发的性能瓶颈很明显,主要原因就说锁定机制导致阻塞。而InnoDB在 锁定机制采用行行级锁,不同于MyISAM的表级锁,行级锁在锁定上带来的消耗大于表级锁,但是在系统并 发访问量高时,InnoDB整体性能高于MyISAM。同时,InnoDB的索引不仅缓存索引本身,也缓存数据, 所以InnoDB需要更大的内存。
    选择合适存储引擎 (
    1)采用MyISAM 引擎 1.R/W(读写比例)>100:1切update相对较少 2.并发不高,不需要事务 3.表数据量小 4.硬件资源有限 (2)采用InnoDB 1.R/W(读写比例) 较小,频繁更新大字段 2.表数据量超过1000W,并发高 3.安全性和可用性要求高 (3)采用Memory 1.有足够的内存 2.对数据一致性要求不高 3.需要定期归档的数据 mysql服务器调整优化措施
    1.关闭不必要的二进制日志和慢查询日志,仅在内存足够和开发调试时打开他们,使用下面的语句查看是否打 开。 show variables like '%slow%';
    还可以使用下面的语句查看慢查询的条数,定期打开方便优化
    show
    global status like '%slow%';
    但是慢查询也会带来一些CPU损耗,建议间断性打开慢查询日志来定位性能瓶颈
    2.适度使用Query,Cache
    3.增加mysql允许的最大连接数,使用下面的语句查看mysql允许的最大连接数 show variables like 'max_connections';
    4.对于MyISAM表适当增加key_buffer_size,这需要根据key_cache的命中率进行计算,例如: show global status like 'key_read%'; 计算方式 key_cache_miss_rate=Key_reads/Key_read_requests*100%; 当key_cache_miss_rate值大于1%时就需要适当增加key_buffer_size了,对于MySAM,还需要注table_cach e的设置。当table_cache不够用的时候,mysql会采用LRU【缓存淘汰算法】踢掉最长时间没有使用的表;如果table_cache设置 过小,MySAM就会反复打开、关闭FRM文件,造成一定的性能损失;如果table_cache 设置过大,mysql将会消耗很多CPU资源 去处理table_cache的算法。因此table_cache值一定要合理,可以参考opened_tables参数的值,如果这个值一直增长,就需要适当增加table_cache值, 对于InnoDB,需要重点注意,innodb_buffer_pool_size参数。
    5.从表中删除大量行后,可运行OPTIMIZE TABLE TableName 进行碎片整理。
  • 相关阅读:
    beacon帧字段结构最全总结(三)——VHT字段总结
    beacon帧字段结构最全总结(二)——HT字段总结
    [LeetCode]题53:Maximum Subarray
    [LeetCode]题15:3Sum
    dilated convolutions:扩张卷积
    python:assert
    [LeetCode]题1:two sum
    opencv3.0配置opencv_contrib
    python学习:数据类型
    python:字典嵌套列表
  • 原文地址:https://www.cnblogs.com/sgm4231/p/10449375.html
Copyright © 2020-2023  润新知