本次學習使用教程《深刻淺出MySQL 數據庫開發、優化與管理維護》(第二版)。mysql
MySQl版本:5.6.34web
MySQL簡介:面試
MySQL數據庫隸屬於MySQL AB公司,當前已被Oracle收購。MySQL幾乎支持全部的操做系統,而且支持很大的表。普遍應用於web服務器領域,MySQL是開源軟件。sql
MySQL是一個關係型數據庫。數據庫
MySQL存儲引擎(2014年,人生第一次面試就跪在這個上面了,直接懵逼,我只學SQL語句了,不知道啥存儲引擎啊):安全
查詢MySQL支持的存儲引擎:服務器
show engines;
查詢當前默認的存儲引擎:併發
show variables like 'storage_engine';
當前MySQL總共有四種經常使用的存儲引擎:高併發
一、InnoDB是事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵。InnoDB被用在衆多須要高性能的大型數據庫站點上。MySQL 5.5 起成爲默認數據庫引擎性能
二、MyISAM基於ISAM存儲引擎,並對其進行擴展。它是在Web、數據倉儲和其餘應用環境下最常使用的存儲引擎之一。MyISAM擁有較高的插入、查詢速度,但不支持事務。MySQL 5.0 以前的默認數據庫引擎
三、Memory全部數據置於內存的存儲引擎,擁有極高的插入,更新和查詢效率。可是會佔用和數據量成正比的內存空間。而且其內容會在 MySQL 從新啓動時丟失。
四、Archive很是適合存儲大量的獨立的,做爲歷史記錄的數據。由於它們不常常被讀取。Archive 擁有高效的插入速度,但其對查詢的支持相對較差。
各類存儲引擎選擇原則:
$若是要提供提交、回滾、崩潰恢復能力的事物安全(ACID兼容)能力,並要求實現併發控制,InnoDB是一個好的選擇。
$若是數據表主要用來插入和查詢記錄,則MyISAM引擎能提供較高的處理效率。
$若是隻是臨時存放數據,數據量不大,而且不須要較高的數據安全性,能夠選擇將數據保存在內存中的Memory引擎,MySQL中使用該引擎做爲臨時表,存放查詢的中間結果。
$若是隻有INSERT和SELECT操做,能夠選擇Archive,Archive支持高併發的插入操做,可是自己不是事務安全的。Archive很是適合存儲歸檔數據,如記錄日誌信息可使用Archive。
參考連接:
一、四種mysql存儲引擎 https://blog.csdn.net/zhangyuan19880606/article/details/51217952
二、mySQL (關係型數據庫管理系統) https://baike.baidu.com/item/mySQL/471251?fr=aladdin