mysql中什么是大表?什么是大事務?該怎么處理?
發表時間:2023-07-10 來源:明輝站整理相關軟件相關文章人氣:
[摘要]本篇文章給大家帶來的內容是關于mysql中什么是大表?什么是大事務?該如何處理?有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。前言相對來說,什么情況下的數據庫表能夠稱為“大表”呢?當...
本篇文章給大家帶來的內容是關于mysql中什么是大表?什么是大事務?該如何處理?有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
前言
相對來說,什么情況下的數據庫表能夠稱為“大表”呢?
大表的影響
大表對查詢的影響
慢查詢:很難在一定的時間內過濾出所需要的數據
(Eg:顯示訂單、來源少、區分度底、大量磁盤IO、降低磁盤效率、慢查詢)
大表對DDL操作的影響
1、建立索引需要很長時間
風險:
MYSQL版本 < 5.5 建立索引會鎖表
MYSQL版本 >= 5.5 雖然不會鎖表但會引起主從延遲
2、修改表結構需要長時間鎖表
風險:
會造成長時間的主從延遲
影響正常的數據操作
如何處理數據庫中的大表
1、分庫分表把一張大表分成多個小表
難點:
分表主鍵的選擇
分表后跨分區數據的查詢和統計
2、大表的歷史數據歸檔
優點:
減少對前后端業務的影響
難點:
歸檔時間點的選擇
如何進行歸檔的操作
什么是事務?
事務要求符合:原子性、一致性、隔離性、持久性
事務的原子性
一個事務必須被視為不可分離的最小工作單位,整個事務中的所有操作要么全部提交成功,要么全部失敗,對于一個事務來說,不可能只執行其中的一部分操作。
Eg:
1、檢查理財賬戶中的余額是否高于2000元
2、從理財賬戶的余額中減去2000元
3、在活動存款賬戶上增加2000元
整個事務中的所有操作要么全部提交成功,要么全部失敗回滾。
事務的一致性
一致性是指事務將數據庫從一種一致性狀態轉換到另外一種一致性狀態,在事務開始之前和事務結束后數據庫中數據的完整性沒有被破壞。
事務的隔離性
隔離性要求一個事務對數據庫中數據的修改,在未提交完成之前對于其他事務是不可見的。
SQL標準中定義的四種各類級別(隔離性由低到高)(并發性由高到低)
未提交讀(READ UNCOMMITED)
已提交讀(READ COMMITED)
可重復讀(REPEATABLE READ)
可串行化(SERIALIZABLE)
事務的持久性
一旦事務提交,則其所做的修改就會永遠保存到數據庫中,此時即使系統崩潰,已經提交的修改數據也不會丟失。
什么是大事務?
運行的時間比較長,操作的數據比較多的事務
風險:
鎖定太多的數據,造成大量的阻塞和鎖超時
回滾所需要的時間比較長
執行時間長,容易造成主從延遲
如何處理大事務?
避免一次處理太多的數據
移出不必要在事務中的SELECT操作
以上就是mysql中什么是大表?什么是大事務?該如何處理?的詳細內容,更多請關注php中文網其它相關文章!
學習教程快速掌握從入門到精通的SQL知識。