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 小结
23.Mysql应用优化的更多相关文章
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 50多条mysql数据库优化建议
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的.在非群集索引下,数据在物理上随机存 ...
- php代码优化,mysql语句优化,面试需要用到的
首先说个问题,就是这些所谓的优化其实代码标准化的建议,其实真算不上什么正真意义上的优化,还有一点需要指出的为了一丁点的性能优化,甚至在代码上的在一次请求上性能提升万分之一的所谓就去大面积改变代码习惯, ...
- Mysql数据库优化
to be add... --------------------------------------------------------------------------------------- ...
- Mysql数据库优化总结2
说明:本文的环境为CENTOS 5.5 64 Bit /Mysql 5.1.50 简介:使用Mysql有一段时间了,期间做了不少关于Mysql优化.设计.维护的工作,这两天有时间做一下简单的总结,方便 ...
- MYSQL之性能优化 ----MySQL性能优化必备25条
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数 ...
- 30多条mysql数据库优化方法【转】
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- MySql Schema 优化
MySQL Schema 优化: 1.保证你的数据库的整洁性. 2.归档老数据 — 删除查询中检索或返回的多余的行 3.在数据上加上索引. 4.不要过度使用索引,评估你的查询. 5 ...
- MySQL 高性能优化实战总结
1 前言 2 优化的哲学 3 优化思路 3.1 优化什么 3.2 优化的范围有哪些 3.3 优化维度 4 优化工具有啥? 4.1 数据库层面 4.2 数据库层面问题解决思路 4.3 系统层面 4.4 ...
随机推荐
- django 认证系统--3
WEB request中的认证 django使用sessions和middleware和reqeust对象联系在一起 它们通过给每一个reqeust请求添加一个request.user属性来代表当前用 ...
- 吴裕雄 python神经网络 花朵图片识别(9)
import osimport numpy as npimport matplotlib.pyplot as pltfrom PIL import Image, ImageChopsfrom skim ...
- JS----贪吃蛇游戏
在网上找到的几种例子 <!DOCTYPE html> <html > <head> <meta http-equiv="Content-Type&q ...
- windows下配置pymysql
可以直接pip安装 pip install pyMysql
- Map、Set、List 集合 差别 联系
提到集合之前,先说说数组Array和集合的区别: (1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) (2)JAVA集合可以存储和操作数目不固定的一组数据. ( ...
- prompt
[prompt] prompt() 方法用于显示可提示用户进行输入的对话框. prompt(text,defaultText) 参数 描述 text 可选.要在对话框中显示的纯文本(而不是 HTML ...
- layout_weight 全解析
[layout_weight 全解析] 参考:http://www.cnblogs.com/net168/p/4227144.html
- XSS和CSRF的区别
XSS:攻击者发现XSS漏洞 => 构造代码 => 发送给受害者 => 攻击者获取受害者的cookie => 完成攻击 CSRF:攻击者发现CSRF漏洞 => 构造代码 ...
- 最短路 poj1125
输入一个n表示有n个点,接下来n行,每行(假设是u)第一个数字m表示有m对数字(每一对两个数字v,w,表示u到v的时间w),后面接m对数字.找一个起点,它到其他点所花费的时间(求起点到其他点距离的最大 ...
- Java项目--俄罗斯方块
Java项目--俄罗斯方块 百度盘链接 链接:http://pan.baidu.com/s/1mhQ9SYc 密码:9ujo 一.心得 二.游戏实例 游戏截图 目录结构 三.代码 1.主界面 Tetr ...