MySQL事務(wù)ID內(nèi)部生成機(jī)制是通過(guò)自增長(zhǎng)計(jì)數(shù)器來(lái)實(shí)現(xiàn)的。
MySQL使用一個(gè)內(nèi)部的64位計(jì)數(shù)器來(lái)生成事務(wù)ID。每當(dāng)發(fā)生一個(gè)新的事務(wù)時(shí),該計(jì)數(shù)器的值就會(huì)自動(dòng)增加,并作為當(dāng)前事務(wù)的ID。事務(wù)ID的生成是在事務(wù)開始時(shí)進(jìn)行的,而不是在事務(wù)提交時(shí)。
事務(wù)ID的生成是基于當(dāng)前MySQL服務(wù)器的實(shí)例,而不是基于整個(gè)MySQL集群。這意味著在不同的MySQL實(shí)例之間,事務(wù)ID的生成是獨(dú)立的。
事務(wù)ID在MySQL中是全局唯一的,并且在實(shí)例重啟后會(huì)重新計(jì)數(shù)。因此,事務(wù)ID不能用于跟蹤事務(wù)的持久性,因?yàn)樗鼈冊(cè)贛ySQL實(shí)例重啟后可能會(huì)重復(fù)。
事務(wù)ID在MySQL的內(nèi)部用于標(biāo)識(shí)和跟蹤事務(wù)的執(zhí)行,以及用于實(shí)現(xiàn)隔離級(jí)別和并發(fā)控制。用戶可以通過(guò)系統(tǒng)變量transaction_read_only來(lái)查看當(dāng)前事務(wù)的ID。