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

MySQL性能優化(未完待續)

engines 數據 大小 完全 處理 thead 不支持 修改表 中間

概述

數據庫往往是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表大小的限制,並且通過將不同的表發布在磁盤的不同區域,有效得改善表的訪問效率。

MySQL性能優化(未完待續)