首頁 >資料庫 >mysql教程 >mysql中什麼是大表?什麼是大事務?該如何處理?

mysql中什麼是大表?什麼是大事務?該如何處理?

不言
不言原創
2018-09-17 17:35:554148瀏覽

本篇文章帶給大家的內容是關於mysql中什麼是大手錶?什麼是大事務?該如何處理?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

前言

相對來說,什麼情況下的資料庫表能夠稱為「大表」呢?

  • 當一個表的資料超過千萬行的時候,就會對資料庫造成影響

  • #當表資料檔巨大,表數據檔案超過10G(資料值相對硬體而言)

大表的影響

大表對查詢的影響

慢查詢:很難在一定的時間內過濾出所需要的資料
(Eg:顯示訂單、來源少、區分度底、大量磁碟IO、降低磁碟效率、慢查詢)

大表對DDL操作的影響

1、建立索引需要很長時間

風險:

MYSQL版本< 5.5 建立索引會鎖定表
MYSQL版本>= 5.5 雖然不會鎖定表但會造成主從延遲

2、修改表結構需要長時間鎖定表

風險:

會造成長時間的主從延遲
影響正常的資料操作

如何處理資料庫中的大表

1、分庫分錶把一張大表分成多個小表

困難:

分錶主鍵的選擇
分錶後跨分區資料的查詢和統計

2、大表的歷史資料歸檔

優點:

#減少對前後端業務的影響

困難:

歸檔時間點的選擇
如何進行歸檔的操作

什麼是交易?

  • 事務是資料庫系統區別於其他一切檔案系統的重要特性之一

  • 交易是一組具有原子性的SQL語句,或是一個獨立的工作單元

事務要求符合:原子性、一致性、隔離性、持久性

交易的原子性

一個事務必須被視為不可分離的最小工作單位,整個事務中的所有操作要么全部提交成功,要么全部失敗,對於一個事務來說,不可能只執行其中的一部分操作。

Eg:
1、檢查理財帳戶中的餘額是否高於2000元
2、從理財帳戶的餘額中減去2000元
3、在活動存款帳戶上增加2000元

整個事務中的所有操作要么全部提交成功,要么全部失敗回滾。

交易的一致性

一致性是指交易將資料庫從一個一致性狀態轉換到另一個一致性狀態,在交易開始之前和事務結束後資料庫中資料的完整性沒有被破壞。

交易的隔離性

隔離性要求一個交易對資料庫中資料的修改,在未提交完成之前對於其他交易是不可見的。

SQL標準中定義的四種各類別等級(隔離性由低到高)(並發性由高到低)

未提交讀取(READ UNCOMMITED)
已提交讀取(READ COMMITED)
可重複讀取(REPEATABLE READ)
可串列化(SERIALIZABLE)

交易的持久性

一旦交易提交,則其所做的修改就會永遠保存到資料庫中,此時即使系統崩潰,已經提交的修改資料也不會遺失。

什麼是大事務?

運行的時間比較長,操作的數據比較多的交易

風險:

#鎖定太多的數據,造成大量的阻塞和鎖定超時
回滾所需要的時間比較長
執行時間長,容易造成主從延遲

如何處理大事務?

  • 避免一次處理太多的資料

  • 移出不必要在交易中的SELECT操作

#

以上是mysql中什麼是大表?什麼是大事務?該如何處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn