mysql 效能學習1

來源:互聯網
上載者:User
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秒重新整理到磁碟,同

時更新資料和索引,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.