中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

房产| 始兴县| 湘潭县| 定南县| 重庆市| 新源县| 怀来县| 开江县| 崇义县| 大化| 安化县| 南康市| 泸西县| 嘉兴市| 中宁县| 牙克石市| 深圳市| 兴宁市| 永宁县| 曲阜市| 曲麻莱县| 高清| 河北区| 贡山| 灌云县| 鹤岗市| 云和县| 灯塔市| 明光市| 沧州市| 错那县| 洪江市| 巴林左旗| 武清区| 镇雄县| 永修县| 临西县| 勐海县| 灌云县| 伽师县| 五大连池市|