程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> 如何讀取Mysql索引

如何讀取Mysql索引

編輯:MYSQL入門知識
 

下面主要就兩個方面進行探討

  1. innodb 和 MYISAM 引擎的區別
  2. B-tree 和 哈希索引的區別

INNODBy引擎和B-TREE存儲

之前一問innodb有什麼特別?一說支持事務,支持樂觀鎖(行級鎖),寫入比查詢快。然後就沒了

這不能怪我,主要是我之前讀書少,之前的狀態就是:讀書少,想的多(這是很多應屆生通病,我正視)

上面的說的innodb的三個特點,我現在只信服兩個,因為自從mysql5.0以後,innodb的讀寫速度差距已經不是那麼大了。

因為這個innodb的存儲引擎有關系。B-tree存儲。

  1. B-TREE存儲引擎對索引的是順序存儲。
  2. B-TREE的索引會包含被索引的列的數據(看懂到這個我瞬間明白了,select * from tablename 為會被不建議了,因為這樣會使用不到索引覆蓋(之前聽得沒聽過的))

MYISAM引擎

之前一說:myisam引擎,之前的理解是:讀的數據快,但不支持事務,支持悲觀鎖(表鎖)

現在的理解是 Myisamz支持全文索引(是一種關鍵字提取),在沒有where的條件下select count(*)速度塊,因為它有一個AUTO_INCREMENT

myisam的存儲方式是三個文件,這三個文件是跨平台的。如果存儲在CD-ROM這類只讀的介質上面,而且MYISAM支持壓縮。它就有,空間小,速度快的特點。有這個特性,它立足MYSQL眾多引擎中的一員是完全有地位的。

說到最後:使用什麼引擎或者建立什麼類型的索引都是看應用場景。在我現在的工作中80%的場景都是innodb。

但如果可以容忍數據錯誤,或者對數據的正確性不是很強烈的要求。那麼myisam也是不錯的選擇。

在說說哈希索引:

哈希索引是順序存儲的,而哈希索引的存儲比較緊湊,所有查找會比較快速。(這裡只有memory引擎是用的哈希索引,mysql的臨時表都是用的這個引擎,如果臨時表太大,臨時表就沒被寫到硬盤上,那時的引擎是MYISAM)

基於這個原因,索引插入的開銷比較大,需要維護哈希表。這就是為什麼讀越快於寫了。

最後在說兩句:

然後再說一個,之前一直覺得很高大的上的東西,就是讀寫分離。

如果做到讀寫分離,我之後會寫一個博文專門說實現過程。這裡先說原理:MYSQL的主從復制

MYSQL5.0以後支持了二進制同步。這樣,就做一個數據庫做主庫專門用來寫數據,然後另一個數據庫做從庫專門用來查數據。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved