MySQL Innodb 스토리지 엔진 (2 개)

  1. 테이블 스페이스 실행 취소

공식 문서 링크 : https://dev.mysql.com/doc/refman/5.7/en/innodb-undo-tablespaces.html

역할 : 실행 취소 작업을 수행하는 데 사용됩니다.

스토리지 : 5.7 버전은 기본적으로 여전히 공유 테이블 스페이스 (ibdataN)에 있으며 8.0 버전 (undo_001, undo_002) 이후에는 기본적으로 독립적입니다.

프로덕션 제안 : 버전 5.7 이후에는 개별적으로 실행 취소를 수동으로 수행합니다.

실행 취소 테이블 스페이스 관리 :
실행 취소 구성 매개 변수를 보는 방법

#打开独立undo模式,并设置undo的个数,3~5个(0 表示没有独立)

mysql> SELECT @@innodb_undo_tablespaces;
+---------------------------+
| @@innodb_undo_tablespaces |
+---------------------------+
|                         3 |
+---------------------------+
#undo日志的大小,默认1G。

mysql> SELECT @@innodb_max_undo_log_size;
+----------------------------+
| @@innodb_max_undo_log_size |
+----------------------------+
|                 1073741824 |
+----------------------------+
# 开启undo自动回收的机制(undo purge)

mysql> select @@innodb_undo_log_truncate;
+----------------------------+
| @@innodb_undo_log_truncate |
+----------------------------+
|                          0 |         0 表示不回收
+----------------------------+
# 触发自动回收的条件,单位是检测次数。

mysql> select @@innodb_purge_rseg_truncate_frequency;
+----------------------------------------+
| @@innodb_purge_rseg_truncate_frequency |
+----------------------------------------+
|                                    128 |        
+----------------------------------------+

실행 취소 테이블 스페이스 구성
공식 문서 설명 : https://dev.mysql.com/doc/refman/5.7/en/innodb-undo-tablespaces.html
여기에 사진 설명 삽입

실행 취소 테이블 스페이스는 초기화시에만 변경이 가능하며 사용 중 변경이 불가능합니다 (ibdata에서는 변경 불가).

솔루션 : 테이블 스페이스 마이그레이션 (물리적) 및 논리적 가져 오기.

# 初始化时配置:
第一历程:编写配置文件
# vim /etc/my.cnf
innodb_undo_tablespaces=3
innodb_max_undo_log_size=128M
innodb_undo_log_truncate=on
innodb_purge_rseg_truncate_frequency=32

第二历程:初始化数据
mysqld --initialize-insecure --user=mysql --basedir=/server/app/mysql --datadir=/server/data

第三历程:启动数据库
# systemctl restart mysqld
# ll -h /server/data/undo*      默认10M
-rw-r----- 1 mysql mysql 10M May  16 15:48 /server/data/undo001
-rw-r----- 1 mysql mysql 10M May  16 15:48 /server/data/undo002
-rw-r----- 1 mysql mysql 10M May  16 15:48 /server/data/undo003

마이그레이션 실행 취소 (독립 스토리지)를 수행하는 방법은 무엇입니까?

查看存储位置:
show variables like "%undo%";

a.关闭数据库
# /etc/init.d/mysqld stop

b.设定路径参数
# vim /etc/my.cnf 
innodb_undo_directory=/data/3306/undologs 

c.创建目录,并拷贝文件
mkdir -p  /data/3306/undologs 
chown -R mysql. /data/* 
#先复制过去,没问题,再删掉。
cp -a /data/3306/data/undo* /data/3306/undologs/      

d.启动数据库 
/etc/init.d/mysqld start
mysql
show variables like "%undo%";
  1. 임시 테이블 공간
    1. 기능 : 사용자가 생성 한 임시 테이블 옵티 마이저에 의해 생성 된 내부 임시 테이블을 저장합니다
    . 2. 관리 방법은?
# ll -h /server/3306/data/ibtmp1
-rw-r----- 1 mysql mysql 12M May  7 16:14 /server/3306/data/ibtmp1
#vim /etc/my.cnf

innodb_temp_data_file_path=ibtmp1:12M;ibtmp2:512M:autoextend:max:512M

# systemctl restart mysqld
        建议数据初始化之前设定好,一般2-3个,大小512M-1G。
  1. 이중 쓰기 버퍼 (DWB)

소개 : 부분 쓰기 실패 (부분 페이지 쓰기 페이지 나누기)를 해결하기 위해 innodb의 안정성을 개선합니다.

위치 : 5.7은 기본적으로 ibdataN에 저장되며 8.20 이후에는 독립적 일 수 있습니다.

Doublewrite Buffer는 어떤 문제를 해결합니까?

그런 다음 먼저 IO의 가장 작은 단위에 대한 질문을 제기합니다.

1. MySQL 기본 IO의 최소 단위는 ()이고 Oracle은 ()입니다.

2. 파일 시스템 IO의 최소 단위는 ()입니다.

3. 디스크 IO의 최소 단위는 ()입니다.

解析:16K,8K,4K (也有1K的)512B

따라서 IO 쓰기로 인한 페이지 손상 위험이 있습니다.

여기에 사진 설명 삽입

이중 쓰기 버퍼 워크 플로우
여기에 사진 설명 삽입

이중 쓰기는 두 부분으로 구성됩니다. 하나는 메모리의 이중 쓰기 버퍼이며 크기는 2MB이고 다른 하나는 디스크의 공유 테이블 공간 (ibdata x)에있는 연속 128 페이지, 즉 2 개의 익스텐트입니다. 크기도 2M입니다.

1. 일련의 메커니즘이 데이터 버퍼 풀에서 더티 페이지의 비우기를 트리거하면 디스크 데이터 파일에 직접 기록되지 않고 먼저 메모리의 이중 쓰기 버퍼에 복사됩니다.

2. 그런 다음 두 개의 쓰기 버퍼 (연속 스토리지, 순차 쓰기, 고성능)에서 디스크 공유 테이블 공간에 두 번 기록하고 각각 1MB를 기록합니다.

3. 두 번째 단계가 완료된 후 이중 쓰기 버퍼에있는 더티 페이지 데이터를 실제 테이블 스페이스 파일에 씁니다 (이산 쓰기) (더티 페이지 데이터가 강화 된 후 해당 이중 쓰기 데이터를 표시하여 덮어 쓸 수 있음).

  1. 버퍼 변경

소개 : 예를 들어 데이터 삽입, 업데이트 및 삭제 클러스터형 인덱스의 경우 리프 노드가 즉시 업데이트됩니다. 보조 인덱스의 경우 실시간으로 업데이트되지 않습니다. 변경 버퍼에 넣으십시오.

InnoDB 메모리 구조에는 삽입 버퍼 (세션)가 추가되고 현재 버전을 변경 버퍼라고합니다.
기본 크기 : mysql은 메모리의 25 %를 차지합니다.
기능 : 보조 인덱스에 필요한 업데이트 된 데이터를 일시적으로 버퍼링합니다. 새로운 인서트의 데이터를 쿼리해야 할 때 메모리에서 병합 작업이 수행되고 보조 인덱스는 이때 최신입니다.

더 흥미로운 콘텐츠를 원하시면 WeChat 공개 계정에 주목하세요.

여기에 사진 설명 삽입

추천

출처blog.csdn.net/weixin_45320660/article/details/114968654