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 小结

23.Mysql应用优化的更多相关文章

  1. 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  2. 50多条mysql数据库优化建议

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存 ...

  3. php代码优化,mysql语句优化,面试需要用到的

    首先说个问题,就是这些所谓的优化其实代码标准化的建议,其实真算不上什么正真意义上的优化,还有一点需要指出的为了一丁点的性能优化,甚至在代码上的在一次请求上性能提升万分之一的所谓就去大面积改变代码习惯, ...

  4. Mysql数据库优化

    to be add... --------------------------------------------------------------------------------------- ...

  5. Mysql数据库优化总结2

    说明:本文的环境为CENTOS 5.5 64 Bit /Mysql 5.1.50 简介:使用Mysql有一段时间了,期间做了不少关于Mysql优化.设计.维护的工作,这两天有时间做一下简单的总结,方便 ...

  6. MYSQL之性能优化 ----MySQL性能优化必备25条

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数 ...

  7. 30多条mysql数据库优化方法【转】

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  8. MySql Schema 优化

    MySQL Schema 优化:   1.保证你的数据库的整洁性.   2.归档老数据 — 删除查询中检索或返回的多余的行   3.在数据上加上索引.   4.不要过度使用索引,评估你的查询.   5 ...

  9. MySQL 高性能优化实战总结

    1 前言 2 优化的哲学 3 优化思路 3.1 优化什么 3.2 优化的范围有哪些 3.3 优化维度 4 优化工具有啥? 4.1 数据库层面 4.2 数据库层面问题解决思路 4.3 系统层面 4.4 ...

随机推荐

  1. 在Centos 6.5 X64下切割m3u8

    操作系统:centos 6.5 必需要参考的文章: http://blog.chinaunix.net/uid-23069658-id-4018842.html 准备工作: 安装git yum ins ...

  2. struts2与spring整合时需要注意的点

    首先我们需要明白spring整合struts2中的什么东西,spring中的核心就是IOC和AOP,IOC是对象的容器,AOP是处理动态代理的;比如spring与hibernate整合时就要用到aop ...

  3. 安装mysql 初始化的时候报错 Can't find file: './mysql/db.frm' (errno: 13) ERROR: 1017

    目录下没有权限 需要权限

  4. hdu1576-A/B-(同余定理+乘法逆元+费马小定理+快速幂)

    A/B Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  5. python基础学习Day11 函数名的应用、闭包、迭代器

    一.函数名的应用 1.函数名就是函数的内存地址 def func(): print(666) func() print(func) #函数的内存地址 2.函数名可以作为变量 def func1(): ...

  6. node中可读流、可写流

    javascript的一个不足之处是不能处理二进制数据,于是node中引入了Buffer类型.这个类型以一个字节(即8位)为单位,给数据分配存储空间.它的使用类似于Array,但是与Array又有不同 ...

  7. opencv批量修改图片尺寸

    #include"opencv2/opencv.hpp" using namespace std; using namespace cv; #include<opencv2/ ...

  8. Numpy random arange zeros

    seed( ) 用于指定随机数生成时所用算法开始的整数值. .如果使用相同的seed( )值,则每次生成的随即数都相同: .如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间 ...

  9. 递归算法结合数据库 解析 java树形结构

    1.准备表结构及对应的表数据a.表结构: create table TB_TREE ( CID NUMBER not null, CNAME VARCHAR2(50), PID NUMBER //父节 ...

  10. 1.3.5、CDH 搭建Hadoop在安装之前(端口---Cloudera Search使用的端口)

    Cloudera Search使用的端口 在下表中,每个端口的“ 访问要求”列通常是“内部”或“外部”.在此上下文中,“内部”表示端口仅用于组件之间的通信; “外部”表示该端口可用于内部或外部通信. ...