硬件配置
- cpu,可使用內存myIsam會把索引緩存到內存中,數據交給操作系統,而innodb會在內存中存儲索引和數據
- 硬盤固態存儲和PCIe卡
- 網絡存儲SAN和NAS
mysql體系結構
特點:插件式存儲引擎,可針對每個表配置
myISAM 存儲引擎
5.5版本之前的默認。MyISAM存儲引擎表由MYD(存儲數據)和MYI(存儲索引)組成。
特性:
- 使用表級別鎖
- 表的檢查與修復,check table tablename /repair table tablename
- 支持數據壓縮(myisampack)和全文索引。壓縮後的表只能讀不能寫。
適用場景:
- 非事務型應用
- 只讀類應用
Innodb存儲引擎
5.5版本之後的默認。使用表空間進行數據存儲。innodb_file_per_table on:獨立表空間tablename.ibd off:系統表空間ibdataX
獨立表空間可以通過optimize table命令收縮系統文件
特性:
- 支持事務的ACID
- 支持行級別鎖,存儲引擎實現的
- redo log 和 undo log
CSV存儲引擎
數據以文本方式存儲在文件中。.csv文件存儲表內容。.csm文件存儲表的元數據如表狀態和數據量。
特性:
- 所有列必須都是不能爲null
- 不支持索引,可以對數據文件直接進行編輯
使用場景:作爲數據中間表
Archive存儲引擎
以zlib對錶數據進行壓縮磁盤io更少。數據存儲在ARZ文件中
特性:
- 只支持insert和select
- 只允許在自增id上建立索引
使用場景:日誌和數據採集類應用
Memory存儲引擎
也稱爲HEAP存儲引擎。數據存在內存中。表數據丟失但是表結構不會丟失。
特性:
- 支持hash(等值查找)索引和btree(範圍查找)索引
- 所有字段都爲固定長度varchar10=char10
- 不支持BLOG和TEXT等大字段
- 使用表級別鎖
使用場景:用於查找或者是映射表,用於保存數據分析中產生的中間表。用於緩存週期性聚合函數的結果表。用於數據容易丟失可再生。
如何選擇正確的存儲引擎
- 事務
- 在線備份
- 崩潰恢復
- 存儲引擎的特有屬性
mysql服務器參數
查看使用配置文件的順序
mysqld --help --verbose | grep -A 1'default options '