1. 程式人生 > >MySQL效能優化(未完待續)

MySQL效能優化(未完待續)

概述

資料庫往往是web應用的效能瓶頸,我們應該儘可能地提高資料庫的效能,這往往需要我們對MySQL做一些自定義的設定。下面的內容大多為學習筆記,實戰程式碼也不多,主要是為了提供一個突破MySQL效能瓶頸的總體思路。

  • 參考的書籍《深入淺出MySQL》等

    一、修改表引擎

    MySQL中有一個儲存引擎的概念,針對不同的儲存需求,我們可以選擇最優的儲存引擎,也就是同一個資料庫裡面的不同的表使用不同的儲存引擎。

    儲存引擎相關操作

  • 檢視預設儲存引擎

show variables like 'table_type'
  • 檢視當前資料庫支援的儲存引擎
show engines \G

或者

show variables like 'have%'
  • 在建立資料表時,可以使用engine關鍵字指定使用的儲存引擎(MySQL5.5以前預設為MyISAM,之後預設為InnoDB)
  • 使用alter關鍵字修改已存在的表
alter table table_name engine = innodb;

常用儲存引擎

特點 MyISAM InnoDB MEMORY MERGE
事務安全 支援
外來鍵支援 支援
鎖機制 表鎖 行鎖 表鎖 表鎖
全文索引 支援

MyISAM

MyISAM不支援事務,也不支援外來鍵,其優點是訪問的速度快,對事務沒有要求的或者以SELECT、INSERT為主的表可以使用這個引擎。

InnoDB

InnoDB一般用於web事務處理,也是MySQL中唯一支援外來鍵索引的儲存引擎。

MEMORY

MEMORY儲存引擎將資料儲存在記憶體中,故其訪問速度非常快,但是使用時需要注意資料的持久化,以免丟失。一般用於存放中間結果,便於高效得對中間結果進行分析,缺點是對資料表的大小有嚴格的限制。

MERGE

MERGE儲存引擎是一組MyISAM表的(邏輯)組合,這些MyISAM表結構必須完全相同,其本省並沒有資料,只是對其組合的表進行操作,刪除MERGE表對其組合的表也沒有影響,其可以突破對單個MyISAM表大小的限制,並且通過將不同的表釋出在磁碟的不同區域,有效得改善表的訪問效率。