儲存引擎
資料的儲存方式就是儲存引擎,引擎不同,資料的儲存方式就不同
mysql中比較重要的引擎:
innodb:mysql5.6以上,預設的儲存方式
支援 transaction 事務;row-level locking 行級鎖;table-level locking 表級鎖;foreign keys外來鍵約束
基於樹的檢索,(資料+樹)+表結構 = 2張表
在硬碟中表結構的檔案字尾為 .frm 資料樹為 .ibd
【transaction事務】裡面的操作,要麼一起成功,要麼一起失敗;保證資料安全;它具備提交、回滾以及崩潰恢復的功能以保護使用者資料
【row-level locking】 行級鎖:對行上說涉及的行數比較少且較分散時使用比較好
【able-level locking】 表級鎖:當涉及的行數比較多時
【樹tree結構】加速資料檢索
【應用】
用於事務處理應用程式,支援外來鍵和行級鎖。如果應用對事物的完整性有比較高的要求,在併發條件下要求資料的一致性,資料操作除了插入和查詢之外,還包括很多更新和刪除操作,那麼innodb儲存引擎是比較合適的。innodb除了有效的降低由刪除和更新導致的鎖定,還可以確保事務的完整提交和回滾,對於類似計費系統或者財務系統等對資料準確要求性比較高的系統都是合適的選擇。
memory:基於hash檢索 硬碟中存表結構+記憶體中存資料
硬碟中表結構 .frm
【特點】
在記憶體中儲存所有資料,應用於對 非關鍵資料 由快速查詢的場景。memory型別的表訪問資料非常快,因為它的資料是存放在記憶體中的,並且預設使用hash索引,但是一旦服務關閉,表中的資料就會丟失
【應用】
將所有的資料儲存在記憶體中,在需要快速定位記錄和其他類似資料的環境下,可以提供極快的訪問。memory的缺陷是對錶的大小有限制,雖然資料庫因為異常終止的話資料可以正常恢復,但是一旦資料庫關閉,儲存在記憶體中的資料都會丟失。
myisam:mysql5.5以下,預設的儲存方式 table-level locking 表級鎖
基於樹的檢索;樹結構+資料+表結構 = 3張表
硬碟中存放樹結構的檔案 .frm 資料 .myd 表結構 .myi
【特點】
myisam既不支援事務、也不支援外來鍵、其優勢是訪問速度快,但是表級別的鎖定限制了它在讀寫負載方面的效能,因此它經常應用於唯讀或者以讀為主的資料場景。
【應用】
如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不高,那麼可以選擇這個儲存引擎。
相對於myisam,innodb支援併發,以及修改刪除的操作效率比較高。
有關引擎的sql語句:
# 檢視資料庫中有哪些儲存引擎
show engines;
# 檢視當前預設的儲存引擎
show variables like "default_storage_engine";
# 建表時指定儲存引擎
create table 表名 (欄位名...) engine = 引擎名;
在配置檔案中設定預設儲存引擎
[mysqld]下
default-storage-engine=innodb
mysql的工作流程
文章參考:
python基礎之python介紹
一 python介紹 python的主要應用領域 哪些公司正在應用 cia 美國中情局 就是用python開發的 nasa 美國航天局 nasa 大量使用python進行資料分析和運算 facebook 大量的基礎庫均通過python實現的 redhat 世界上最流行的linux發行版本中的yum包...
四 Django學習之關係表介紹及使用
xx models.onetoonefield to 表名 to field 欄位名 on delete models.cascade on delete 刪除時的一些級聯效果,to field可以不寫,預設是關聯到另一張表的主鍵,on delete在1.x版本的django中不用寫,預設是級聯刪除...
python之函式的基本介紹
二 函式的基本使用 三 定義函式的三種格式 四 函式的呼叫 四 函式呼叫的三種格式 五 總結 具備某一功能的工具 函式 工具的使用 事先準備好工具 函式的定義 遇到應用場景拿來就用 函式的呼叫1 程式的組織結構不清晰,可讀性差 2 如果要用到重複的功能,只能拷貝功能的實現 冗餘 3 可擴充套件性差 ...