設計: 儲存引擎的選擇,字段型別,正規化
功能: 索引,快取,分割槽
架構: 主從複製,讀寫分離,負載均衡
合理sql:測試,經驗。
一、儲存引擎的選擇
用來儲存mysql中物件(記錄和索引)的一種特定的結構(檔案結構)。
儲存引擎,處於mysql伺服器的最底層,直接儲存資料,導致上層的操作,取決於引擎的選擇。
檢視mysql支援的引擎
show engines;
1、innodb
mysql5.5以上預設的儲存引擎。
提供事務,行級鎖定,外來鍵約束的儲存引擎。
事務安全型儲存引擎,更加注重資料的完整性和安全性。
innodb儲存格式
資料,索引集中儲存,儲存於同乙個表空間檔案中。
資料(記錄行)
索引(一種檢索機制,也需要一定的空間)
建立innodb表後,存在檔案有:
.frm 表結構檔案
ibdata1 就是innodb的表空間檔案,儲存了資料和索引
預設,所有的innodb表的表空間檔案,都在同乙個空間中。
通過配置,可以讓每一張innodb表,乙個表空間。
> show variables like 'innodb%';
> set global innodb_file_per_table=1;
資料按照主鍵順序儲存,插入時做排序工作,效率低。
innodb的特定功能
事務:外來鍵約束:
維護資料完整性。
innodb併發處理
擅長處理併發的,行級鎖定(row-level locking),
多版本併發控制(mvcc),效果達到無阻塞的讀操作。
鎖的概念
當客戶端操作表(記錄)時,為了保證操作的隔離性(多個客戶端操作互不能互相影響),
通過加鎖來處理。
操作方面:
讀鎖:讀操作時增加的鎖,也叫共享鎖。阻塞其他客戶端的寫操作,不阻塞讀操作。
寫鎖:寫操作時增加的鎖,也叫獨佔鎖或排它鎖。阻塞其他客戶端的讀寫操作。
鎖定粒度(範圍):
行級:提公升併發性,鎖本身的開銷大。
表級:不利於併發性,鎖本身的開銷小。
2、myisam
低於mysql5.5版本時,mysql的預設引擎。
isam:indexed sequential access method索引順序訪問方法
擅長與處理高速讀與寫操作。
myisam儲存方式
資料,索引分別儲存於不同的檔案中。
.frm 資料表結構
.myd 表資料
.myi 表索引
資料的儲存順序為插入的順序,插入速度快,空間佔用量小。
myisam功能
支援全文索引(mysql版本大於5.6,innodb也支援)
資料的壓縮儲存,.myd檔案的壓縮儲存。
進入到要壓縮表的資料目錄
> myisampack 表名
(*)注意,壓縮後,需要重新修復索引。
> myisamchk -rq 表名
壓縮優勢:節省磁碟空間,減少磁碟io開銷。
特點:壓縮表為唯讀表。
如果需要更新,則需要解壓後更新,再壓縮,重新索引。
> myisamchk --unpack 表名
myisam併發性
僅僅支援表級鎖定。
支援併發插入,插入操作不會阻塞讀操作(其他操作)。
3、archive
存檔型僅提供了插入和查詢操作,非常高效,無阻塞的插入和查詢。
4、memory
記憶體型資料儲存於記憶體中的儲存引擎,快取型儲存引擎。
二、字段型別的選擇
原則:1、在滿足需求的情況下,盡可能的占用空間小。
2、盡可能定長,占用儲存空間固定。
3、盡可能的用整數
三、正規化的選擇
建議:滿足第三正規化。
有時候我們需要逆正規化,提公升效率。
MySQL優化(一) 概述
2.在硬體級別進行優化 3.平衡可移植性和效能 資料庫效能取決於資料庫級別的多個因素,例如表,查詢和配置設定。這些軟體構造導致硬體級別的cpu和i o操作,必須盡可能地最小化並盡可能高效。使資料庫應用程式快速執行的最重要因素是其基本設計 結構合理嗎?特別是,列是否具有正確的資料型別,並且每個表是否具...
mysql優化 1。之概述
設計 儲存引擎,字段型別,正規化。功能 索引,快取,分割槽。架構 主從複製,讀寫分離,負載均衡。合理的sql 測試和經驗。表引擎 某一種資料的儲存格式。一般叫某一種檔案系統。一般用到四種引擎innodb,myisam archive memory innodb 事務 多條sql語句全部執行完畢。才算...
MySQL資料庫優化概述
1,避免出現頁面訪問錯誤 由於資料庫的timeout產生的5 錯誤 由於慢查詢造成的也沒無法載入 由於阻塞造成資料無法提交 2,增加資料庫的穩定性 很多資料庫的問題都是由於低效的查詢引起的 3,優化使用者體驗 流暢頁面的訪問速度 良好的 功能體驗 sql及索引 避免慢查詢,阻塞操作 資料庫表結構 滿...