真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么使用MySQL5.6中Innodb獨立的undotablespace

這篇文章主要講解了“怎么使用MySQL5.6中Innodb獨立的undo tablespace”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么使用MySQL5.6中Innodb獨立的undo tablespace”吧!

10年積累的成都做網(wǎng)站、網(wǎng)站設計經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設流程,更有曲麻萊免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

1.使用

有幾個參數(shù)來控制該行為

# innodb_undo_tablespaces

用于設定創(chuàng)建的undo表空間的個數(shù),在Install db時初始化后,就再也不能被改動了;

默認值為0,表示不獨立設置undo的tablespace,默認記錄到ibdata中;否則,則在undo目錄下創(chuàng)建這么多個undo文件,例如假定設置該值為16,那么就會創(chuàng)建命名為undo001~undo016的undo tablespace文件,每個文件的默認大小為10M

修改該值可能會導致Innodb無法完成初始化;

# innodb_undo_logs

用于表示回滾段的個數(shù)(早期版本的命名為 innodb_rollback_segments  ),該變量可以動態(tài)調(diào)整,但是物理上的回滾段不會減少,只是會控制用到的回滾段的個數(shù);

默認為128個回滾段

# innodb_undo_directory

當開啟獨立undo表空間時,指定undo文件存放的目錄

如果我們想轉(zhuǎn)移undo文件的位置,只需要修改下該配置,并將undo文件拷貝過去就可以了。

2.相關代碼

#在innodb啟動時(innobase_start_or_create_for_mysql),會進行undo表空間初始化,細節(jié)見函數(shù)srv_undo_tablespaces_init

–>如果是新建實例,會去創(chuàng)建undo log文件,undo表空間的space id從1開始;默認初始化大小為10M,由宏SRV_UNDO_TABLESPACE_SIZE_IN_PAGES控制;

–>讀取當前實例的所有undo表空間的space id (trx_rseg_get_n_undo_tablespaces)

首先從ibdata中讀取到事務系統(tǒng)的文件頭,然后再從其中記錄的回滾段信息,找到回滾段對應的space id和page no(trx_sysf_rseg_get_space,trx_sysf_rseg_get_page_no),并按照space id排序后返回;

–>根據(jù)上一步讀到的space id依次打開undo文件(srv_undo_tablespace_open),如果不存在,就標識啟動失敗

所以undo文件也是類似ibdata的重要文件,目前是不可以刪除的。。。所以不要試圖刪除undo文件來釋放空間- -!

可以容忍定義的table space個數(shù)比已有的undo文件個數(shù)要少(但所有的undo文件依然會打開),反之則報錯初始化失敗

#undo回滾段初始化 (trx_sys_create_rsegs)

如果是正常shutdown重啟,并且設置的回滾段個數(shù)大于目前已經(jīng)使用的回滾段個數(shù)(trx_sysf_rseg_find_free),就會去新建回滾段(trx_rseg_create)

這里總是從第一個undolog tablespace開始初始化回滾段,看起來似乎有些問題,極端情況下,如果我每次重啟遞增innodb_undo_logs,是不是意味著所有的undo回滾段都會寫入到第一個undo tablespace中?

完成初始化后,將當前可用的undo 回滾段的個數(shù)復制給srv_available_undo_logs,可以通過show status查看:

root@performance_schema 12:16:18>show status like ‘Innodb_available_undo_logs’; 
+—————————-+——-+ 
| Variable_name              | Value | 
+—————————-+——-+ 
| Innodb_available_undo_logs | 128   | 
+—————————-+——-+ 
1 row in set (0.00 sec)

啟動后,innodb_undo_logs是可以動態(tài)調(diào)整的,但最大不可以超過Innodb_available_undo_logs

#在一個非只讀的事務開啟時,會為其分配回滾段(trx_assign_rseg_low),動態(tài)的調(diào)整innodb_undo_logs可以限定分配的回滾段范圍;

TODO

當有長時間運行的事務時,可能導致purge操作來不及回收undo空間,進而導致undo空間急劇膨脹;理論上講,如果做一次干凈的shutdown,應該可以安全的將將這些undo文件刪除并重新做一次初始化;也許未來的某個MySQL版本可能實現(xiàn)這個功能,這對于某些服務(比如按磁盤空間收費的云計算提供商)是非常有必要的功能

感謝各位的閱讀,以上就是“怎么使用MySQL5.6中Innodb獨立的undo tablespace”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對怎么使用MySQL5.6中Innodb獨立的undo tablespace這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!


分享題目:怎么使用MySQL5.6中Innodb獨立的undotablespace
網(wǎng)站地址:http://weahome.cn/article/jsgjdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部