亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MYSQL innodb中的只讀事物以及事物id的分配方式

發布時間:2020-08-12 18:30:30 來源:ITPUB博客 閱讀:247 作者:gaopengtttt 欄目:MySQL數據庫
原創水平有限,如果有誤請指出


一、只讀事物
也許有人要問一個select算不算一個事物。其實在innodb中一個innodb的select是一個事物,他有trx_t結構體,并且放到了mysql_trx_list鏈表中,關于
innodb事物系統一級的事都做了,但是這種事物叫做只讀事物
bool read_only; /*!< true if transaction is flagged
as a READ-ONLY transaction.
if auto_commit && will_lock == 0
then it will be handled as a
AC-NL-RO-SELECT (Auto Commit Non-Locking
Read Only Select). A read only
transaction will not be assigned an
UNDO log. */
在實際的使用中他沒有自己的鎖結構也沒有自己的undo segment,這一點很好理解因為這個操作
始終是非鎖定的,至少在innodb一級是這樣(lock0lock.cc lock_table 都沒調用),但是在MYSQL中,我們會發現實際上select語句也會
獲得MDL LOCK。(再次聲明這里只是說innodb select沒有表級別鎖存在,但是MYSQL上層會有MDL LOCK)
對于只讀事物源碼注釋給出的流程如下:
Auto-commit non-locking read-only:
* NOT_STARTED -> ACTIVE -> NOT_STARTED
而我們一般的2pc TRX流程如下:
XA (2PC):
* NOT_STARTED -> ACTIVE -> PREPARED -> COMMITTED -> NOT_STARTED
可以看到他實際上就是沒有commit的步驟,沒有undo reodo這些當然是不需要的。但是不可否認它是一個事物
另外當需要一個事物的時候在現在innodb版本中調用如下:
trx_allocate_for_mysql --> trx_allocate_for_background --> trx_create_low 
這里涉及到一個innodb 事物池的概念,trx_create_low 從事物池中取出一個事物TRX_T結構體指針給調用者
這個步驟完成后事物處于NOT_STARTED階段,這個時候TRX_T結構各種屬性都處于初始化階段,為什么要說一下
事物池的概念因為后面說事物號分配的時候會用到這個概念。
然后根據調用者的需求適時激活事物。實際上會調用,而調用會通過
trx_start_if_not_started_low->trx_start_low完成,在trx_start_low做好事物結構的準備工作,我們來看一
下關于源碼中重點的部分


Optimizing InnoDB Read-Only Transactions  我就不在說明什么了。


作者微信:

MYSQL innodb中的只讀事物以及事物id的分配方式


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德安县| 恩施市| 江口县| 来安县| 康平县| 牙克石市| 裕民县| 东宁县| 抚顺市| 吐鲁番市| 柘城县| 昌吉市| 珠海市| 从化市| 英吉沙县| 嘉荫县| 分宜县| 确山县| 玉树县| 巢湖市| 常山县| 双牌县| 石门县| 成武县| 宁陵县| 汤原县| 抚宁县| 湘西| 左权县| 尼木县| 神农架林区| 湖口县| 邯郸市| 楚雄市| 唐河县| 偏关县| 澄迈县| 松溪县| 馆陶县| 潍坊市| 武功县|