zoukankan      html  css  js  c++  java
  • 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 小结

  • 相关阅读:
    反射
    jQuery之Dom操作
    Jquery学习开篇
    c#构造函数
    c#之委托
    DataX启动步骤解析
    JobContainer
    DataX 启动配置
    DataX源码分析(2)
    DataX源码分析(1)
  • 原文地址:https://www.cnblogs.com/BradMiller/p/10124043.html
Copyright © 2011-2022 走看看