mysql 性能学习1

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秒刷新到磁盘,同

时更新数据和索引,
posted on 2010-06-22 23:19 jackyrong的世界 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/jackyrong/archive/2010/06/22/1763001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值