資料庫事務介紹:
簡單的說,事務就是指邏輯上的一組sql操作,組成這組操作的sql語句,執行時要麼全成功,要麼全失敗。
事務的四大特性(acid):
1.原子性(atomicity)
事務是不可分割的乙個單位,事務中的所有sql操作要麼都發生,要麼都不發生。
2.一致性(consistency)
事務發生前和發生後,資料的完整性必須保持一致。
3.隔離性(isolation)
當併發訪問資料庫時,乙個正在執行的事務在執行完畢前,對於其他的會話是不可見的,多個併發事務之間的資料是相互隔離的。使用mysqldump備份時,使用--single-transcation引數
4.永續性(durability)
乙個事務一旦被提交,它對資料庫中的資料的改變是永久性的。如果出了錯誤,事務也不允許撤銷,只能通過」補償式事務」。
事務的開啟:
資料庫預設事務時自動提交的。也就是發一條sql他就執行一條。如果想多條sql放乙個事務中執行,則需要使用事務進行處理。當我們開啟乙個事務,而且沒有提交,mysql會自動回滾事務。
資料庫事務開啟自動提交:
set autocommit =on
set autocommit =off ###關閉自動提交
commit 提交事務
rollback 回滾事務
mysql常見引擎:
innodb:
支援相容的(acid)事務,支援事務的4個級別,支援多版本閱讀;
支援引數完整性,即對外鍵的支援;
行級鎖定(更新時一般是鎖定當前行),通過索引實現,表掃瞄仍然會是表鎖,注意間隙鎖的影響;
讀寫阻塞與事務隔離級別相關;
具有非常高效的快取特性,能快取索引,也能快取資料;
整個表和主鍵以cluster方式儲存,組成一顆平衡樹;
所有secondary index 都會儲存主鍵資訊。
支援分割槽,表空間,類似oracle資料庫。
支援鍵外約束。
和myisam引擎相比,對硬體資源要求較高。
相比myisam引擎,innodb更消耗資源,速度沒有myisam快。
innodb調優:
1.主鍵盡可能小,避免給secondary index帶來過大的空間負擔。
2.避免全表掃瞄,因為會使表鎖。
3.盡可能快取所有的引擎和資料,提高響應速度,減少磁碟i/o消耗。
4.在大批量小插入的時候,盡量自己控制事務而不要使用autocommit自動提交。
5.合理使用innodb_flush_log_at_trx_commit值,不要過度追求安全性。
6.避免主鍵更新,因為這回帶來大量的資料移動。
myisam:是mysql5.5.5前預設的儲存引擎。
不支援事務;
表級鎖定,讀寫互相阻塞,讀讀不阻塞;
只會索引快取,通過key_buff_size快取索引,不會快取資料;
讀取速度較快,占用資源較少;
不支援外來鍵約束,但支援全文索引。
myisam引擎調優:
1.設定合適的索引(快取機制)。
2.調整讀寫優先順序,根據實際要求確保重要操作優先執行。
3.啟用延遲插入改善大批量寫入效能(降低寫入頻率,盡可能一次寫入多條資料)。
4.盡量順序操作讓insert資料都寫入到尾部,減少阻塞。
5.分解大的操作,降低單個操作的阻塞時間。
6.降低併發數(減少對mysql的訪問),某些高併發場景通過應用進行排隊佇列機制。
7.相對靜態(更改不頻繁)的資料庫資料,充分利用query cache和memcached快取伺服器可以極大的提高訪問效率。
8.myisam的count只有在全表掃瞄時才特別高效,帶有其他條件的count時都需要進行實際資料訪問。
9.可以把主從同步的主庫使用innodb,從庫使用myisam引擎。
mysql引擎和事務
對於應用程式和使用者來說,同樣一張表的資料無論用什麼引擎來儲存,看到的資料都是一樣的,只是不同的引擎在功能 占用空間大小 讀取效能等方面可能有所差別。mysql最常用的儲存引擎為innodb myisam和全文索引 5.5.5以前預設儲存引擎為myisam,5.5.5及之後預設儲存引擎為innodb...
mysql儲存引擎,事務,事務回滾
檢視已有表的使用儲存引擎 show create table 表名 g 檢視當前資料庫的預設儲存引擎和可提供的儲存引擎 show engines 修改儲存引擎 step1 修改配置檔案 etc my.cnf default storage engine 儲存引擎 step2 重啟mysqld服務 修...
MySQL索引 事務 儲存引擎
索引建立的方法 建立索引的原則依據 檢視索引的方法 刪除索引的方法 事務的概念 事務的acid特點 事務控制語句 事務的控制方法 儲存引擎概念介紹 業選擇儲存引擎依據 修改儲存引擎 注 no unique為0 注 no unique為1 注 屬於唯一性索引的一種 直接建立索引 修改表結構方式新增索引...