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 ...
随机推荐
- HTML+CSS基础课程三
1.文字排版--字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性.下面我们来看一个例子,下面代码实现:为网页中的文字设置字体为宋体. body{font-family:&quo ...
- C++ CTreeview的checkbox使用方法
1. 消息事件 (1)鼠标点击当前ITEM的CHECKBOX:引发NM_CLICK事件并传递TVHT_ONITEMSTATEICON. (2)鼠标点击当前ITEM的TEXT:引发NM_CLIC ...
- RTX二次开发SDK需要注意的地方
1.如果是ASP.net二次开发调用的,线程池必须开发 Enable 32-bit Applications设置为true. 因为RTX的调用接口很多是32位的.否则会报一下错误 RootObj = ...
- 论Ubuntu下的docker多难搭建
慷慨一下: 上周四开始打算在Ubuntu系统下面熟悉操作一下docker,所以深知在本地的虚拟机上搭建一个docker非常的easy. 但是,要下载一个镜像,真是太难了.基本可以说是下载不了的.于是乎 ...
- Template literals
[Template literals] Template literals are string literals allowing embedded expressions. You can use ...
- JMeter学习(二十九)自动化badboy脚本开发技术(转载)
转载自 http://www.cnblogs.com/yangxia-test 一般人用badboy都是使用它的录制功能,其它badboy还是一款自动化的工具,它可以实现检查点.参数化.迭代.并发.报 ...
- 解决ie浏览器下载apk或ipa变为zip
Tomcat/conf/web.xml <mime-mapping> <extension>apk</extension> <mime-type>app ...
- redis主从复制踩到的那些坑
一.报错:* MASTER <-> SLAVE sync started # Error condition on socket for SYNC: No route to host解决: ...
- 贪吃蛇Controller Java实现(二)
package cn.tcc.snake.Controller; import java.awt.Point;import java.awt.event.KeyAdapter;import java. ...
- Example of Formalising a Grammar for use with Lex & Yacc
Here is a sample of a data-file that we want to try and recognise. It is a list of students and info ...