- 浏览: 134894 次
- 性别:
- 来自: 北京
文章分类
最新评论
mysql 性能优化
- 博客分类:
- linux mysql
(有时候MySQL比较傻,所以你得会使用FORCE INDEX)。
select * from t
FORCE INDEX(rid)
where ,,,
/////// 多个 char(255)
对于 有些字符串需求,长度超过了char(255), 使用 text 又浪费,可以使用两个char(255),速度快了吧
// 显示有哪些索引
SHOW INDEX FROM db.table
------------------------------------------------
【架构】
1. 字段类型精确设置,
2. 表链接 查询时的对比字段类型需要一致,长度 也要一致,比如,都是char(16),char(16)
3. 排序,大偏移量,,先读取主键,然后根据主键取需要的字段 数据
4. mysql 一次执行职能使用一个索引,注意需要排序的字段和其他有索引的字段 语句设计
5. memory表 使用hash索引,hash 索引仅支持 “=”,“IN”,“<=>” 条件,不能排序
【程序】
以下理论都不是绝对的,而是开发初期应该做的,到了开发后期,出现性能问题的时候,要根据实际情况决定哪个更合适
1. 请求了不必要的字段
2. 有必要使用limit
3. 没特殊必要,都用简单的select 查询语句取数据,不要多表链接查询,,不放心可以在开发完成后进行测试,链表是否更好
4. 减少服务器请求次数,(和第三条貌似有些矛盾,没关系,因地制宜)
5. 不要用子查询,
6. 不要一次性让数据库处理太多 curd操作,要产生时间间隔 分批次执行,
7. count(*)
8. limit 优化
select * from t limit 99999,20;
改成 select * from t where id> (select id from t limit 99998,1) limit 20;
对于分页,如果每页需要数据 20条,那么取21,最后一个的id就可以用于下一页使用,而不必再使用 子查询
x. 网上搜到,下面情况会使索引失效:没有实际测试过在什么情况会失效,反正避免使用它们吧
1.对索引列进行进行 计算 或用 函数 加以处理时
2.两边比较值的索引列的数据类型不一致时
3.not in ,or 关键字会使索引失效
4.含有null列值的列,即使该列是组合索引中的其中一列
5.任何where子句中含有IS NULL ,IS NOT NULL
6.like 中首个关键字符是通配符时,如:'%haitao%'
7.order by子句中:
使用表达式时;
对不同的索引键做 ORDER BY : SELECT * FROM t1 ORDER BY key1, key2; 。
用于搜索记录的索引键和做 ORDER BY 的不是同一个:SELECT * FROM t1 WHERE key2=constant ORDER BY key1;
emp_no<'10010' 范围列可以用到索引(必须是最左前缀),但是范围列后面的列无法用到索引。同时,索引最多用于一个范围列,因此如果查询条件中有两个范围列则无法全用到索引。
很多需要实际看数据使用情况,比如,多列索引的最左前缀使用,
总结之:sql语句里,不用 函数,or, null,like, ,其他是设计数据库的问题
不要轻易相信网上说的一切,有性能问题的时候,explain 你的sql,还有 mysql> set profiling=1, 才是真的,
【服务器】
查询缓存,
缓存可能因大量碎片,内存不足,数据改变 导致失效,
如果已经分配了足够的内存,query_cache_min_res_unit 也调整到了合适值,
那就是数据改变过多引起的,可以查看Com_*(com_update,com_delete)的值看有多少查询被修改了,
Qcache_lowmem_prunes -- 因内存不足而失效的查询
query_cache_type 是否开启 查询缓存
query_cache_size 分配的内存大小,必须是1024的倍数
query_cache_limit 查询结果集最大限制,如果查询结果比这个大,将不缓存,如果确认某个sql语句 是这样,语句加上 sql_no_cache 提供性能
优化缓存的大原则:
减少碎片
提高可用性
query_cache_min_res_unit 一个内存和cpu较量的参数
Qcache_free_blocks
如果Qcache_free_blocks接近Qcache_total_blocks的一半,说明查询cache碎片很严重
可以使用FLUSH QUERY CACHE命令来去掉查询cache中的碎片,他不会将cache的结果删除,那是RESET QUERY CACHE的工作
-------------------
show variables like '%slow%';
show global variables;
--------补充
varchar类型并不是不能超过255长度(实际上是65535字节),而是超过了255,这个字段就不能建立索引了。
在MySQL5.0.3及以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去 了3个字节,也就是说,在5.0.3以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以在高版本中使用可变长的varchar来存放,这样就 能有效的减少数据库文件的大小
发表评论
-
复制数据库
2017-05-16 10:50 291CREATE DATABASE `newdb` DE ... -
mysql 备份表的一个方法
2016-01-19 11:51 587#--- start # 新建表 create t ... -
mysql 锁表
2015-12-08 12:08 333http://blog.itpub.net/1548 ... -
利用mysqlnd_ms实现mysql读写分离
2015-10-16 12:24 610http://www.jincon.com/archives/ ... -
MySQL数据库防火墙 – SQLassie 的使用方法
2015-10-16 12:23 737http://www.jincon.com/archives/ ... -
[转]大多数人只需要学会这样使用sqlmap进行注入
2015-08-05 15:24 1484http://www.codefrom.com/c/97 -
mysql开发规范
2015-01-15 18:24 5421. 库名、表名、字段名 必须使用小写字 ... -
存储过程
2014-03-13 11:19 629php的默认 mysql扩展 对 mysql的存储过 ... -
mysql
2013-12-06 13:35 453/home/service/mysql/bin/mysql ... -
mysql 随机数
2013-11-28 22:37 401FLOOR(i + RAND() * (j – i + ... -
xtrabackup
2013-08-26 15:38 527http://database.51cto.com/art ... -
查看数据表大小
2013-07-06 12:50 594// 表 select TABLE_NAME AS '表名 ... -
查询当前持有锁的sql
2012-12-17 11:23 6701. mysqladmin -u user1 -p debug ... -
分页的另一种方式
2012-12-17 11:10 707SELECT SQL_CALC_FOUND_ROWS id,n ... -
mysql 的ibdata1
2012-11-26 15:45 1027ibdata用来储存 innodb 文件的数据 会越来 ... -
mysql 编码设置
2012-11-20 12:33 523[mysqld] 增加如下一行 default- ... -
phpmyadmin 2M限制
2012-11-20 11:43 627一、修改c:\windows\php.ini文件。 如果是W ... -
mysql 删除账号
2012-11-11 09:11 0use mysql revoke all on *.* ... -
远程访问mysql
2011-10-09 16:53 682mysql----- 0.查看所有用户: SELECT ... -
查看 sql执行时间
2011-07-06 13:06 909使用phpmyadmin 查看sql 语句执行时间, 比如 S ...
相关推荐
mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化mysql 性能优化...
mysql性能优化
mysql性能优化教程.pdf,方面阅读
mysql 性能优化与架构设计的word完整版,不可多得得关于 mysql 性能优化以及架构设计方面的资料。
MySQL性能优化和高可用架构实践.pptx
Mysql性能优化教程 优化mysql性能,高并发
caoz的mysql性能优化教程 caoz的mysql性能优化教程 caoz的mysql性能优化教程 caoz的mysql性能优化教程 caoz的mysql性能优化教程
MySQL性能优化中文手册 包括sql语句,存储过程,函数的调试,调优
千金良方:MySQL性能优化金字塔法则.docx
Mysql性能优化教程
MySQL性能优化教学视频: https://www.bilibili.com/video/av29072634/?p=5 对应的笔记和资料
mysql性能优化与诊断,详解优化经验与如何诊断瓶颈在哪
mysql性能优化的一个文档资料,大家下载来看看吧。mysql性能优化的一个文档资料,大家下载来看看吧mysql性能优化的一个文档资料,大家下载来看看吧
十三MySQL性能优化详解.pdf
MySQL性能优化的最佳20条经验,还不错,可以下载来看看。
mysql 性能 优化 pdf MySQL 介绍和优化分享
大牛-高级教程MySQL性能优化实战。
MySQL性能优化 为查询缓存优化你的查询 2. EXPLAIN 你的 SELECT 查询
MySQL 性能优化 Explain ,MySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 ExplainMySQL 性能优化 Explain
MySQL性能优化 SQL优化方法技巧