日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql innodb_undo_directory默认_MySQL innodb_undo_tablespaces相关参数

發布時間:2024/9/19 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql innodb_undo_directory默认_MySQL innodb_undo_tablespaces相关参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘錄自:http://gfsunny.blog.51cto.com/990565/1566683

undo log(回滾):服務器異常關機或斷電重啟后,MySQL會對修改過,但尚未提交的事務進行回滾。

在MySQL5.6中開始支持把undo log分離到獨立的表空間,并放到單獨的文件目錄下。這給部署不同IO類型的文件位置帶來便利,對于并發寫入型負載,可以把undo文件部署到單獨的高速SSD存儲設備上。

undo tablespaces相關參數參數含義

innodb_undo_directory[=/opt/mysql/undo]Innodb為還原日志創建的獨立表空間的相對或絕對路徑。通常用于日志被放置在哪些不同的存儲設備上。配合參數innodb_undo_logs和innodb_undo_tablespaces,這決定了系統表空間外還原日志的磁盤分布。默認目錄為innodb默認創建它的其他日志文件的目錄。

如果想轉移undo文件的位置,只需要修改下該配置,并將undo文件拷貝過去就可以了。【支持后期修改】

innodb_undo_logs[=128]定義在一個事務中innodb使用的系統表空間中回滾段的個數。如果觀察到同回滾日志有關的互斥爭用,可以調整這個參數以優化性能。早期版本的命名為innodb_rollback_segments,該變量可以動態調整,但是物理上的回滾段不會減少,只是會控制用到的回滾段的個數;默認為128個回滾段【手冊上最大就是128】【支持后期修改】

innodb_undo_tablespaces[=4]用于設定創建的undo表空間的個數,在mysql_install_db時初始化后,就再也不能被改動了,修改該值會導致MySQL無法啟動。

默認值為0,表示不獨立設置undo的tablespace,默認記錄到ibdata中;否則,則在undo目錄下創建這么多個undo文件(每個文件的默認大小為10M)。最多可以設置到126。

例如假定設置該值為4,那么就會在mysql的data目錄下創建命名為undo001~undo004的undo tablespace文件。【不支持后期修改】

undo回滾段初始化

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

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

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

mysql> show status like'innodb_available_undo_logs';

+----------------------------+-------+

| Variable_name????????????? | Value |

+----------------------------+-------+

| Innodb_available_undo_logs | 128 ? |

+----------------------------+-------+

1 row in set (0.02 sec)

啟動后,innodb_undo_logs是可以動態調整的,但最大不可以超過Innodb_available_undo_logs

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

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

參數設置演示:

# rm -rf /data/3306/data/*

# cd /usr/local/mysql/scripts/

# ./mysql_install_db--basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql --innodb_undo_tablespaces=4

# /etc/init.d/mysqld_3306start

注意:加了--innodb_undo_tablespaces=4參數初始化后,修改my.cnf,加入innodb_undo的參數,如下3行:

innodb_undo_logs=100

innodb_undo_tablespaces = 4

innodb_undo_directory = /tmp/? #這里我是演示起見,隨便設置的一個目錄

啟動mysql,在/tmp/目錄下會生成獨立的undo表空間文件,如下圖:

> show variables like 'innodb_undo%';也可以看到修改生效了

MySQL5.6手冊上的截圖如下:

總結

以上是生活随笔為你收集整理的mysql innodb_undo_directory默认_MySQL innodb_undo_tablespaces相关参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。