mysql 应用优化_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 小结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值