《MySQL技術內幕InnoDB儲存引擎》讀書筆記 第一章

來源:互聯網
上載者:User

標籤:引擎   memory   nes   like   組織   檔案類型   show   啟動失敗   一個   

Mysql體繫結構和儲存引擎

1.1 定義資料庫和執行個體

  資料庫:物理作業系統檔案或其他形式檔案類型的集合。    資料庫檔案可以使frm,MYD,MYI,ibd結尾的檔案。

  執行個體:MySQL資料庫由後台線程以及一個共用記憶體區組成。    資料庫執行個體才是真正用於操作資料庫檔案的。

 

  執行個體與資料庫的關係通常是一一對應的,在叢集情況下可能存在一個資料庫被多個資料執行個體使用的情況。

  MySQL被設計為一個單進程多線程架構的資料庫,這點與SQL Server比較類似,但與Oracle多進程的架構有所不同(Oracle的Windows版本也是單進程多線程的架構的)

  MySQL資料庫執行個體在系統上的表現就是一個進程。

 

  Oracle 中如果沒有參數檔案,在啟動執行個體時會提示找不到該參數檔案,資料庫啟動失敗。而在MySQL資料庫中,可以沒有設定檔,在這種情況下,MySQL會按照編譯時間的預設

參數設定啟動執行個體。

  MySQL 資料庫是按 /etc/my.cnf -->/etc/mysql/my.cnf-->/usr/local/mysql/etc/my.cnf-->~/.my.cnf 的順序讀取設定檔。如果幾個設定檔中都有同一個參數,MySQL資料庫以讀取到的最後一個設定檔中的參數為準。  在Linux環境下,設定檔一般放在 /etc/my.cnf 下。在Windows平台下,設定檔的尾碼名可能是.cnf,也可能是.ini。

 

  設定檔中有一個參數datadir,該參數指定了資料庫所在的路徑。在Linux作業系統下預設datadir為/usr/local/mysql/data

  可以用命令查看  mysql > SHOW VARIABLES LIKE ‘datadir’\G;

  

1.2 MySQL體繫結構

  從概念上來說,資料庫是檔案的集合,是依照某種資料模型組織起來並存放於二級儲存空間中的資料集合;資料庫執行個體時是程式,是位於使用者與作業系統之間的一層資料管理軟體,使用者對資料庫資料的任何操作,包括資料庫定義、資料查詢、資料維護、資料庫運行控制等都是在資料庫執行個體下進行的,應用程式只有通過資料庫執行個體才能和資料庫打交道。

  MySQL由以下幾部分組成:

     串連池組件、管理服務和工具組件、SQL介面組件、查詢分析器組件、最佳化器組件、緩衝組件、外掛程式式儲存引擎、物理檔案。

 

  需要特別注意的是,儲存引擎是基於表的,而不是資料庫。

1.3 MySQL儲存引擎

  1.3.1 InnoDB儲存引擎

    InnoDB儲存引擎支援事物,面向線上是事物處理(OLTP)的應用。其特點是行鎖設計、支援外鍵,並支援類似於Oracle的非鎖定讀,即預設讀取操作不會產生鎖。

    從MySQL4.1(包括4.1)版本開始,InnoDB儲存引擎的表單獨存放到一個獨立的ibd檔案中。此外,InnoDB儲存引擎支援用裸裝置用來建立其資料表空間。

    如果沒有顯示地定義時指定主鍵,InnoDB儲存引擎會為每一行產生一個6位元組的ROWID,並以此作為主鍵。

   1.3.2 MyISAM儲存引擎

    MyISAM儲存引擎不支援事務、表鎖設計,支援全文檢索索引,主要面向一些OLAP資料庫應用。在MySQL5.5.8版本之前MyISAM儲存引擎是預設的儲存引擎(除Windows版本外)。  MyISAM儲存引擎的緩衝池只緩衝索引檔案,而不緩衝資料檔案。

    MyISAM儲存引擎表由MYD和MYI組成,MYD用來存放資料檔案,MYI用來存放索引檔案。 使用myisampack工具壓縮後的表是唯讀。

    在MySQL5.0版本之前,MyISAM預設支援的表大小為4GB, 5.0之後預設支援256TB的單表資料。

  1.3.3 NDB儲存引擎

    NDB儲存引擎是一個叢集儲存引擎 更高的可用性 資料全部放在記憶體中(5.1版本後 可以將非索引資料放在磁碟上) 是高可用、高效能的叢集系統。

    NDB儲存引擎的串連操作是在MySQL資料庫層完成的,而不是在儲存引擎層完成的。這意味著,複雜的串連操作需要巨大的網路開銷,因此查詢速度很慢。如果解決了這個問題,NDB儲存引擎的市場應該非常巨大。

  1.3.4 Memory 儲存引擎

    Memory 儲存引擎(之前稱為HEAP儲存引擎)將表中的資料存放在記憶體中,如果資料重啟或發生崩潰,表中的資料都將消失。

    不支援TEXT和BLOB列類型。

  1.3.5 Archive 儲存引擎

    Archive儲存引擎只支援INSERT和SELECT操作,從MySQL5.1開始支援索引。

    Archive儲存引擎非常適合儲存歸檔資料,如日誌資訊。Archive儲存引擎使用行鎖來實現高並發的插入操作,但其本身並不是事物安全的儲存引擎,其設計目標主要是提供高速的插入和壓縮功能。

  1.3.6 Federated儲存引擎

    Federated儲存引擎表並不存放資料,它只是指向一台遠端資料庫伺服器上的表。

  1.3.7 Maria儲存引擎

    可以看做是MyISAM的後續版本。Maria儲存引擎的特點是:支援快取資料和索引檔案,應用了行鎖設計,提供了MVCC功能,支援事物和非事務安全的選項,以及更好的BLOB字元類型的處理效能。

 

 

  mysql > SHOW ENGINES\G;    //查看支援的儲存引擎

  1.5 串連MySQL

  串連MySQL操作是一個串連進程和MySQL資料庫執行個體進行通訊。 進程通訊的方式有管道、具名管道、命名字、TCP/IP通訊端、UNIX域通訊端。

  TCP/IP是基於網路的,而通訊端一般用於同一台伺服器。

  例:

    TCP/IP :    C:\ > mysql -h 192.168.0.101 -u david -p

    UNIX域通訊端: mysql -udavid -S  /tmp/mysql.sock

 

1.6 小結

  資料庫和執行個體定義

  體繫結構 進一步突出 執行個體和資料庫

  MySQL外掛程式式儲存引擎

  MySQL儲存引擎無優劣差異只有適合不適合。

 

 

  

 

《MySQL技術內幕InnoDB儲存引擎》讀書筆記 第一章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.