centos7 python的虛擬環境
阿新 • • 發佈:2020-12-27
資料庫儲存引擎是資料庫底層軟體元件,資料庫管理系統(DBMS)使用資料引擎進行建立、查詢、更新和刪除資料操作。不同的儲存引擎提供不同的儲存機制、索引技巧、鎖定水平等功能。使用不同的儲存引擎,還可以獲得特定的功能。現在許多不同的資料庫管理系統都支援多種不同的資料引擎。Mysql的核心就是儲存引擎。
Mysql提供了不同的儲存引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在Mysql中,不需要在整個伺服器中使用一種引擎。針對具體要求可以對每一個表使用不同的儲存引擎。
Mysql支援多種儲存引擎,如InnoDB、MylSAM、Memory、Merge、Archive、CSV、Federated等等。
一、MylSAM儲存引擎
1.1 MylSAM儲存引擎的特點
- Mysql 5.5之前預設使用MylSAM引擎,Mysql5.5之後預設使用InnoDB引擎;
- MylSAM引擎讀取資料較快,佔用資源較少,不支援事務,不支援外來鍵約束,但支援全文索引;
- 讀寫相互阻塞,也就是說讀資料時就不可寫資料,學資料時就不可讀資料;
- MylSAM引擎只能快取索引,而不能快取資料;
1.2 MylSAM使用場景
- 不需要事務支援的業務;
- 適用於讀資料較多的業務;
- 併發相對較低、資料修改相對較少的業務;
-硬體資源較差的機器可以考慮使用MylSAM引擎;
二、InnoDB儲存引擎
2.1 InnoDB儲存引擎的特點
- 事務型資料庫的首選引擎,支援事務安全表,支援行鎖定和外來鍵,Mysql5.5.5版本之後,InnoDB作為預設儲存引擎;
- 具有提交、回滾和崩潰恢復能力的事務安全儲存引擎,能處理巨大資料量,效能及效率高,完全支援外來鍵完整性約束;
- 具有非常高效的快取特性,可以快取索引也可快取資料,對硬體要求較高;
- 使用InnoDB時,將在Mysql資料目錄下的建立一個名為ibdata1的10M大小的自動擴充套件資料檔案,以及兩個ib_logfile0和ib_logfile1的5M大小的日誌檔案;
2.2 InnoDB使用場景
- 需要資料支援的業務,高併發的業務;
- 資料更新較為頻繁的場景,比如BBS、SNS、微博等;
- 資料一致性要求較高的業務,比如充值轉賬、銀行卡轉賬;
三、Memory儲存引擎
3.1 Memory儲存引擎的特點
- Memory儲存引擎將表中的資料儲存到記憶體中,為查詢和引用其他表資料提供快速訪問;
- Memory儲存引擎執行HASH和BTREE索引,不支援BLOB和TEXT列,支援AUTO_INCREMENT列和對可包含NULL值的列的索引;
- 當不再需要Memory表的內容時,要釋放被Memory表使用的記憶體,應該執行DELETE FROM或TRUNCATE TABLE,或者刪除整個表;
四、如何選擇合適的儲存引擎
不同的業務需要選擇不同的而儲存引擎,可以參考以下幾點進行選擇:
- 如果要提供提交、回滾和崩潰恢復能力的事務安全能力,並要求實現併發控制,InnoDB是個很好的選擇;
- 如果資料表主要用來插入和查詢記錄,則MylSAM引擎能提供較高的處理效率;
- 如果只是臨時存放資料,資料量不大,並且不需要較高的安全性,可以選擇將資料儲存在記憶體中的Memory引擎,使用該引擎作為臨時表,存放查詢的中間結果;
- 如果只有INSERT和SELECT操作,可以選擇Archive引擎,支援高併發的插入操作,如記錄日誌資訊,可以使用Archive引擎;
主要的三個資料引擎所支援的功能如下表:
功能 | MylSAM | Memory | InnoDB |
---|---|---|---|
儲存限制 | 256TB | RAM | 64TB |
支援事務 | NO | NO | YES |
支援全文索引 | YES | NO | NO |
支援資料索引 | YES | YES | YES |
支援雜湊快取 | NO | YES | NO |
支援資料快取 | NO | N/A | YES |
支援外來鍵 | NO | NO | YES |
五、檢視及修改表的預設儲存引擎
show engines\G; #檢視資料庫支援的索引
show variables like 'default_storage_engine'; #檢視資料庫預設的儲存引擎
show variables like '%engine%'; #檢視全部的預設引擎
show create table t1\G; #檢視t1表預設的引擎
alter table t1 engine=myisam; #修改t1表的預設引擎為MylSAM