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. Signing Your Applications(Android签名相关)

    In this document Signing Overview Signing in Debug Mode Signing in Release Mode Signing Android Wear ...

  2. js判断json对象中是否含有某个属性

    obj.hasOwnProperty("key"); 原地址:https://blog.csdn.net/feicongcong/article/details/53463872

  3. yum源制作

    CentOS7 同步远程镜像 搭建本地yum服务器同步CentOS镜像站点的数据到本地服务器,使用nginx实现http服务向局域网内的其他机器提供yum服务,解决内网yum安装软件的问题. 一.前提 ...

  4. SSM综合练习

    CRM系统 CRM项目外观 1. 开发环境 IDE: Eclipse Neon Release (4.6.0) Jdk: 1.8 数据库: MySQL 2. 创建数据库 创建crm数据库,这里使用的是 ...

  5. js 提示条

    js: var Persen = { timeUptopBar:function(fun) { var obj = $('.top-alert'); obj.fadeOut(1500,function ...

  6. 初识Elasticsearch,bulk 操作的遇到的那些事

    bulk api可以在单个请求中一次执行多个文档的 create . index . update 或 delete 操作 批量操作的行为(action)必须是以下几种: 行为 解释 create 当 ...

  7. Java 获取一个字符串中,另一个字符串出现的次数

    Java 获取一个字符串中,另一个字符串出现的次数 思想: 1. indexOf到字符串中到第一次出现的索引2. 找到的索引+被找字符串长度,截取字符串3. 计数器++ 代码实现: public cl ...

  8. cakePHP 分页栏

    <div class="page"><?php if ($total > 1) echo $this->element('page_list', ar ...

  9. 用PLSQL Developer 查看Oracle的存储过程

    1 2.输入 3.具体存储过程

  10. 问题1:设置了text-overflow : ellipsis未起作用

    <style type="text/css"> * { padding: 0; } .div01 , .div02 { margin-top: 10px; border ...