mysql调优要怎么做 mysql怎么优化( 八 )


这个技术非常复杂,在大多数情况下它会对大多数类型的查询直到加速的作用 。不过,当你有太多的查询往数据库,在某一个点上它会花过多的时间等待AHI锁和闩锁 。
如果你的是MySQL 5.7,没有这个问题 – innodb_adaptive_hash_index_parts默认设置为8,所以自适应哈希索引被切割为8个分区,因为不存在全局互斥 。
不过在mysql 5.7前的版本,没有AHI分区数量的控制 。换句话说,有一个全局互斥锁来保护AHI,可能导致你的select查询经常撞墙 。
所以如果你运行的是5.1或5.6,并且有大量的select查询 , 最简单的方案就是切换成同一版本的Percona Server来激活AHI分区 。
14.QUERY_CACHE_TYPE
如果人认为查询缓存效果很好,肯定应该使用它 。好吧,有时候是有用的 。不过这个只在你在低负载时有用,特别是在低负载下大多数是读取,小量写或者没有 。
如果是那样的情况 , 设置query_cache_type=ON和query_cache_size=256M就好了 。不过记住不能把256M设置更高的值了,否则会由于查询缓存失效时,导致引起严重的服务器停顿 。
如果你的MySQL服务器高负载动作,建议设置query_cache_size=0和query_cache_type=OFF , 并重启服务器生效 。那样Mysql就会停止在所有的查询使用查询缓存互斥锁 。
15.TABLE_OPEN_CACHE_INSTANCES
从MySQL 5.6.6开始,表缓存能分割到多个分区 。
表缓存用来存放目前已打开表的列表,当每一个表打开或关闭互斥体就被锁定 – 即使这是一个隐式临时表 。使用多个分区绝对减少了潜在的争用 。
从MySQL 5.7.8开始,table_open_cache_instances=16是默认的配置 。
欢迎做Java的工程师朋友们私信我资料免费获取免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)
其中覆盖了互联网的方方面面,期间碰到各种产品各种场景下的各种问题,很值得大家借鉴和学习,扩展自己的技术广度和知识面 。
mysql怎么优化,都要怎么做mysql优化是一个大方向,大的是要分布式、读写分离,小的是对sql语句进行优化 。不过大多问的也是对sql语句优化,网上很多资料,我就大体说说 。
1、explain+索引 。
在你要查询的语句前加explain,看下有没有用到索引,如果出现type为all的 , 则说明有必要添加下索引 。(附多表查询速度比较:表关联existsin)慢查询优化是一大块 。
2、预统计 。
很经常需要对历史的数据进行过滤统计 。比如移动需要统计上个月电话小时数超过N小时的人,那么如果直接取原始数据,那将很慢 , 此时如果每天晚上凌晨都对数据进行预统计,统计每个人每天电话时数,那再来过滤就很快 。
3、分表分区 。
分表分区也是为了提高搜索速度 。例如,公交车的gps行驶记录,gps每隔15s报一次,一辆车一天运行12小时,一天就要插入4*60*12条记录,N辆车就要再乘,其数量极大,所以经常按月分表,分表里再按上报时间做日分区,这样就达到很大的优化 , 想查询某段时间,mysql很快就可以定位到 。
4、表结构 。
表结构很重要,经常需要多表关联查询一些字段 , 有时可以冗余下放到同一张表 。
mysql优化很有意思,多去查阅些资料 , 多去尝试,对你有好处的 。
mysql调优要怎么做的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql怎么优化、mysql调优要怎么做的信息别忘了在本站进行查找喔 。

推荐阅读