mysql 性能学习1
来源:互联网 发布:流星网络电视2.88破解 编辑:程序博客网 时间:2024/05/17 22:55
1 使用explain语句去查看分析结果,如
explain select * from test1 where id=1;
会出现:
id selecttype table type possible_keys key key_len ref rows extra各列
其中,type=const表示通过索引一次就找到了,key=primary的话,表示使用了主键
type=all,表示为全表扫描,key=null表示没用到索引;
假如在test1表中,结构如下:
id name
假如id为自动递增,name设置了索引,则explain后,会发现
type=ref,因为这时认为是多个匹配行,在联合查询中,一般为REF
2 MYSQL中的组合索引
假设表有id,key1,key2,key3,把三者形成一个组合索引,则
如:
where key1=....
where key1=1 and key2=2
where key1=3 and key3=3 and key2=2
根据最左原则,这些都是可以使用索引的哦
如
from test where key1=1 order by key3
用explain分析的话,只用到了normal_key索引,但只对where子句起作用,而后面的order by需要排序
3 使用慢查询分析:
在my.ini中:
long_query_time=1
log-slow-queries=d:/mysql5/logs/mysqlslow.log
把超过1秒的记录在慢查询日志中
可以用mysqlsla来分析之。也可以在mysqlreport中,有如
DMS 分别分析了select ,update,insert,delete,replace等所占的百份比
4 MYISAM和INNODB的锁定
myisam中,注意是表锁来的,比如在多个UPDATE操作后,再SELECT时,会发现SELECT操作被锁定了,必须等所有
UPDATE操作完毕后,再能SELECT
innodb的话则不同了,用的是行锁,不存在上面问题。
5 MYSQL的事务配置项
innodb_flush_log_at_trx_commit=1
表示事务提交时立即把事务日志写入磁盘,同时数据和索引也更新
innodb_flush_log_at_trx_commit=0
事务提交时,不立即把事务日志写入磁盘,每隔1秒写一次
innodb_flush_log_at_trx_commit=2
事务提交时,立即写入磁盘文件(这里只是写入到内核缓冲区,但不立即刷新到磁盘,而是每隔1秒刷新到磁盘,同
时更新数据和索引,
explain select * from test1 where id=1;
会出现:
id selecttype table type possible_keys key key_len ref rows extra各列
其中,type=const表示通过索引一次就找到了,key=primary的话,表示使用了主键
type=all,表示为全表扫描,key=null表示没用到索引;
假如在test1表中,结构如下:
id name
假如id为自动递增,name设置了索引,则explain后,会发现
type=ref,因为这时认为是多个匹配行,在联合查询中,一般为REF
2 MYSQL中的组合索引
假设表有id,key1,key2,key3,把三者形成一个组合索引,则
如:
where key1=....
where key1=1 and key2=2
where key1=3 and key3=3 and key2=2
根据最左原则,这些都是可以使用索引的哦
如
from test where key1=1 order by key3
用explain分析的话,只用到了normal_key索引,但只对where子句起作用,而后面的order by需要排序
3 使用慢查询分析:
在my.ini中:
long_query_time=1
log-slow-queries=d:/mysql5/logs/mysqlslow.log
把超过1秒的记录在慢查询日志中
可以用mysqlsla来分析之。也可以在mysqlreport中,有如
DMS 分别分析了select ,update,insert,delete,replace等所占的百份比
4 MYISAM和INNODB的锁定
myisam中,注意是表锁来的,比如在多个UPDATE操作后,再SELECT时,会发现SELECT操作被锁定了,必须等所有
UPDATE操作完毕后,再能SELECT
innodb的话则不同了,用的是行锁,不存在上面问题。
5 MYSQL的事务配置项
innodb_flush_log_at_trx_commit=1
表示事务提交时立即把事务日志写入磁盘,同时数据和索引也更新
innodb_flush_log_at_trx_commit=0
事务提交时,不立即把事务日志写入磁盘,每隔1秒写一次
innodb_flush_log_at_trx_commit=2
事务提交时,立即写入磁盘文件(这里只是写入到内核缓冲区,但不立即刷新到磁盘,而是每隔1秒刷新到磁盘,同
时更新数据和索引,
- mysql 性能学习1
- mysql性能优化学习与实战-1
- MySQL性能优化学习
- MySQL性能优化学习
- 高性能MySQL学习笔记(1) —— MySQL架构
- MySQL 学习<十六> 性能优化
- MySQL高性能学习笔记
- MySQL学习笔记(三)性能优化1
- mysql 性能1
- mysql性能优化1
- 高性能MySql学习笔记(一)
- 高性能MySQL学习笔记(二)
- mysql高性能学习笔记整理
- MySQL学习笔记 8 -性能优化
- 《高性能MYSQL》学习(一)
- 《高性能MYSQL》学习(二)
- Web性能优化学习MySQL查询缓存
- mysql性能优化学习与实战-2
- 深度剖析WinPcap之(八)——打开与关闭适配器(4)
- 从事手机游戏工作半年来的反思
- 《影响力》 让人顺从的六大原理 [美] Robert B. Cialdini
- 深度剖析WinPcap之(八)——打开与关闭适配器(5)
- 【浙大网新图灵通讯】无废话简单高效C#编码规范20100621
- mysql 性能学习1
- 简洁的代码
- netCMS学习笔记
- Sping3.0.3 and JPA2.0
- Head First Servlets&Jsp 读书摘记2——【作为Servlet】
- windows运行命令大全
- 在64位Windows 7/2008操作系统上部署32位的Web应用程序错误
- 【转】CPUID--CPU Identification
- 1111