23.Mysql应用优化

23.应用优化
23.1 使用连接池
应用启动时创建好连接,以供用户使用,而不是每次创建。

23.2 减少对Mysql的访问
23.2.1 避免对同一数据做重复检索
合并简单查询,减少访问次数。
23.2.2 使用查询缓存
Mysql查询缓存能够存储select查询的文本和结果,收到相同查询时直接从缓存输出不再解析SQL执行查询。
查询缓存适用于更新不频繁的表,当表结构或数据更新时,已缓存的数据将被清空。
查询缓存系统参数:
have_query_cache:Mysql安装时是否配置了查询缓存。
query_cache_type:0/off 关闭缓存,1/on打开缓存(使用SQL_NO_CACHE提示的select不进行缓存) ,2/demand只对SQL_CACHE提示的select进行缓存。
query_cache_size:缓存区大小,单位MB。
query_cache_limit:
query_cache_min_res_unit:
query_cache_wlock_invalidate:
查询缓存状态变量:
Qcache_total_blocks:查询缓存中块的总量
Qcache_free_blocks:查询缓存中空闲块的总量
Qcache_free_memory:查询缓存中空闲的内存
Qcahce_not_cached:没有被缓存的查询数量(因query_cache_type参数设置不能被缓存的查询数量)
Qcahce_inserts:被加入到缓存中的查询数量(历史总共被缓存的数量)
Qcahce_queries_in_cache:在缓存中已注册的查询数量(当前被缓存的数量)
Qcahce_lowmem_prunes:因缺少内存而被从缓存中删除的查询数量
Qcahce_hits:缓存采样数量
23.2.3 增加CACHE层
在应用端增加cache层以减轻数据库压力。
把访问频率高的数据放在cache层上,设置cache层与数据库的同步机制。

23.3 负载均衡
负载均衡(Load Balance)是利用均衡算法,将负载分布到不同的服务器上,以减轻单台服务器压力。
23.3.1 利用Mysql复制分流查询操作
Mysql主从复制可以实现读写分离。
主库进行更新操作,可以除主键外不建索引;从库进行查询操作,根据查询条件创建不同的索引。
通过忽略不需要复制的库和表来减轻复制binlog的数据量。
缺点:更新频繁、网络问题、大事务可能导致主从复制延迟更新,从而导致主从库查询结果不一致。
23.3.2 采用分布式数据库架构
分布式数据库:在多台服务器之间分布数据并实现负载均衡。
缺点:未实现全局事务。

23.4 其他优化措施
MyISAM引擎的表在没有空间空洞时支持插入操作与查询操作并行(即锁兼容),空间空洞指删除操作导致的磁盘碎片,可以使用optimize命令来移动数据消除磁盘碎片。
给列增加默认值,减少mysql语法分析,提高插入速度。
尽量不要使用自增变量,由应用实现自增。

23.5 小结

转载于:https://www.cnblogs.com/BradMiller/p/10124043.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值