免费行情软件网站游戏,一般通过什么渠道了解防灾减灾知识,深圳市企业网站seo营销工具,网站空间服务器排名redo log buffer#xff1a; 缓存与事务有关的redo log ,用来对mysql进行crash恢复#xff0c;不可禁用#xff1b; 日志缓冲区是存储要写入磁盘上日志文件的数据的内存区域。日志缓冲区大小由innodb_Log_buffer_size变量定义。 默认大小为16MB。日志缓冲区的内容会定… redo log buffer 缓存与事务有关的redo log ,用来对mysql进行crash恢复不可禁用 日志缓冲区是存储要写入磁盘上日志文件的数据的内存区域。日志缓冲区大小由innodb_Log_buffer_size变量定义。 默认大小为16MB。日志缓冲区的内容会定期刷新到磁盘。大型日志缓冲区使大型事务能够运行 而无需在事务提交之前将重做日志数据写入磁盘。因此如果您有更新、插入或删除许多行的事务 那么增加日志缓冲区的大小可以节省磁盘I/O 变量innodb_log_buffer_size: 指定redo log buffer的大小 变量innodb_log_group_home_dir: 指定redo log file的路径 变量innodb_log_files_in_group : 每组日志组中包含的日志文件个数 mysql show variables like innodb_log_group_home_dir; ---------------------------------- | Variable_name | Value | ---------------------------------- | innodb_log_group_home_dir | ./ | ---------------------------------- 1 row in set (0.00 sec) mysql show variables like innodb_log_files_in_group; ---------------------------------- | Variable_name | Value | ---------------------------------- | innodb_log_files_in_group | 2 | ---------------------------------- 1 row in set (0.00 sec) mysql show variables like datadir; ---------------------------------- | Variable_name | Value | ---------------------------------- | datadir | /data/mysql/data/ | ---------------------------------- 1 row in set (0.00 sec) mysql [rootstudent ~]# ls /data/mysql/data/*logfile* /data/mysql/data/ib_logfile0 /data/mysql/data/ib_logfile1 组中共有两个logfile [rootstudent ~]# du -m /data/mysql/data/*logfile* #48MB 48 /data/mysql/data/ib_logfile0 48 /data/mysql/data/ib_logfile1 [rootstudent ~]# mysql show variables like innodb_log_file_size; #日志大小 -------------------------------- | Variable_name | Value | -------------------------------- | innodb_log_file_size | 50331648 | -------------------------------- 1 row in set (0.01 sec) mysql select 50331648/1024/1024; -------------------- | 50331648/1024/1024 | -------------------- | 48.00000000 | -------------------- 1 row in set (0.00 sec) mysql 修改日志组和日志文件大小 [rootstudent ~]# systemctl stop mysql [rootstudent ~]# cat /etc/my.cnf [mysqld] datadir/data/mysql/data/ socket/data/mysql/mysql.sock innodb_buffer_pool_chunk_size64M innodb_buffer_pool_size256M innodb_log_file_size100M innodb_log_files_in_group4 [rootstudent ~]# systemctl start mysql mysql show variables like %innodb_log%; ----------------------------------------------- | Variable_name | Value | ----------------------------------------------- | innodb_log_buffer_size | 16777216 | | innodb_log_checksums | ON | | innodb_log_compressed_pages | ON | | innodb_log_file_size | 104857600 | #100MB | innodb_log_files_in_group | 4 | #4个logfile | innodb_log_group_home_dir | ./ | | innodb_log_spin_cpu_abs_lwm | 80 | | innodb_log_spin_cpu_pct_hwm | 50 | | innodb_log_wait_for_flush_spin_hwm | 400 | | innodb_log_write_ahead_size | 8192 | ----------------------------------------------- [rootstudent ~]# du -m /data/mysql/data/ib_logfile* 100 /data/mysql/data/ib_logfile0 100 /data/mysql/data/ib_logfile1 100 /data/mysql/data/ib_logfile2 100 /data/mysql/data/ib_logfile3 [rootstudent ~]# redo log buffer:缓存与事务有关的redo log,用来对mysqldi进行crash恢复不可禁用 变量innodb log buffer size:指定redo log buffer的大小 变量innodb_log_group_home_dir:指定redo log文件的路径 变量innodb_log_files_in_group:指定Redo log.文件的数量 变量innodb_log_file_size:指定每个redo log文件的大小 实验redo log的设置 1、查看上述变量I 2、通过set命令指定redo log buffer的大小为32M 3、在选项文件中指定相关变量设置redo log buffer的大小为32M,设置redo log.文件为4个每个文件100M 重新启动mysqld服务再此查看上述变量
存储引擎
列出 mysql所支持的存储引擎 mysqlshow engines;
默认存储引擎为innoDB,不可禁用
mysql show engines;
只有InnoDB 和DBcluster支持事务acid
mysql use testdb mysql create table t1(id integer); mysql start transaction; mysql insert into t1 values(1); mysql select * from t1; ------ | id | ------ | 1 | ------ 1 row in set (0.00 sec)
mysql insert into t1 values(xyz); ERROR 1366 (HY000): Incorrect integer value: xyz for column id at row 1 mysql rollback; mysql select * from t1; Empty set (0.00 sec)
#体现要么全部成功要么全部失败
LAMPLinux Apache mysql PHP 加锁的级别 InnoDB:行级锁 MyISAM:表级锁 数据字典系统表 表空间一种逻辑结构用于组织表和索引位于表和数据文件之间
实验1存储引擎 1、创建数据库testdb,进入数据库 create databases testdb; use testdb; 2、 创建表t1,存储引擎为myisam create table t1(id integer) enginemyisam 3、在表上执行事务观察事务的rollback start transaction; insert into t1 values(100); insert into t1 values(xyz);#观赛错误信息 rollback ; mysql rollback ; #回滚之后数据还在因为mysql 不支持ACID Query OK, 0 rows affected, 1 warning (0.00 sec) mysql select * from t1; ------ | id | ------ | 100 | ------ 1 row in set (0.00 sec) 4、创建表t2 存储引擎为innodb,在表上执行事务观察事务的rollback create table t2(id integer) engineinnodb; start transaction; insert into t2 values(100); insert into t2 values(xyz);#观赛错误信息 rollback; #rollback 之后刚插入的数据全部回滚 mysql select * from t2; Empty set (0.00 sec)
5、 把t1表的存储引擎改为innnodb; alter table t1 engine innodb; mysql start transaction; Query OK, 0 rows affected (0.00 sec) mysql insert into t1 values(22); Query OK, 1 row affected (0.00 sec) mysql insert into t2 values(xyz); ERROR 1366 (HY000): Incorrect integer value: xyz for column id at row 1 mysql rollback; Query OK, 0 rows affected (0.02 sec) mysql select * from t1; ------ | id | ------ | 100 | ------ 1 row in set (0.00 sec) mysql
表空间
表空间的类型 System Tablespace Undo Tablespaces General Tablespaces File-Per-Table Tablespaces Temporary Tablespace System Tablespace 在MySQL 8.0中InnoDB将元数据存储在MySQL数据字典中.在以前的MySQL版本中系统表空间也包含双写缓冲区存储Doublewrite Buffer区域。从MySQL 8.0.20开始此存储区域位于单独的双写文件中.
系统表空间可以有一个或多个数据文件。默认情况下在数据目录中创建一个名为ibdata1的系统表空间数据文件。
与系统表空间有关的变量 innodb_data_file_path系统表空间数据文件的名称、初始大小和数量是否自动扩展 innodb_data_home_dir 系统表空间数据文件的路径如果为空则是数据文件路径 innodb_autoextend_increment每次扩展系统表空间时的自动扩展量
mysql show variables like %innodb_data%; ----------------------------------------------- | Variable_name | Value | ----------------------------------------------- | innodb_data_file_path | ibdata1:12M:autoextend | | innodb_data_home_dir | | ----------------------------------------------- 2 rows in set (0.00 sec)
[rootstudent ~]# du -m /data/mysql/data/ibdata1; 12 /data/mysql/data/ibdata1
mysql show variables like innodb_autoextend_increment; ------------------------------------ | Variable_name | Value | ------------------------------------ | innodb_autoextend_increment | 64 | ------------------------------------ 1 row in set (0.01 sec) 扩展系统表空间
需要在配置文件中更改
扩容
[mysqld] datadir/data/mysql/data/ socket/data/mysql/mysql.sock
innodb_buffer_pool_chunk_size64M innodb_buffer_pool_size256M
innodb_log_file_size100M innodb_log_files_in_group4
#innodb_data_file_pathibdata1:10M:autoextend innodb_data_home_dir innodb_data_file_path/data/mysql/data/ibdata1:12M;/data/mysql/data/ibdata2:480M:autoextend:max:960M不能通过更改现有系统表空间数据文件的大小属性来增加其大小。例如在启动服务器时将innodb_data_file_path设置从ibdata1:12M:autoextend更改为ibdata1:120M:autoextend会生以下 类似错误
[ERROR] [MY-012263] [InnoDB] The Auto-extending innodb_system data file ./ibdata1 is of a different size 640 pages (rounded down to MB) than specified in the .cnf file: initial 768 pages, max 0 (relevant if non-zero) pages! ###只有最后一个文件才可以自动扩展
验证
mysql show variables like %innodb_data%; ------------------------------------------------------------------------------------------------------- | Variable_name | Value | ------------------------------------------------------------------------------------------------------- | innodb_data_file_path | /data/mysql/data/ibdata1:12M;/data/mysql/data/ibdata2:480M:autoextend:max:960M | | innodb_data_home_dir | | ------------------------------------------------------------------------------------------------------- 2 rows in set (0.01 sec)
mysql 缩容
不支持减小现有系统表空间的大小。实现较小系统表空间的唯一选择是将数据从备份恢复到使用所需系统表空间大小配置创建的新MySQL实例。
为系统表空间使用原始磁盘分区
MySQL :: MySQL 8.0 Reference Manual :: 15.6.3.1 The System Tablespace Temporary Tablespaces session temporary tablespaces InnoDB 会话临时表空间存储用户创建的临时表和优化器创建的内部临时表。从MySQL 8.0.16开始用于磁盘内部临时表的存储引擎是InnoDB。以前存储引擎由internal_tmp_disk_storage_engine的值决定。
会话临时表空间文件创建时大小为五页文件扩展名为.ibt。
[rootstudent ~]# du -m /data/mysql/data/ibtmp1 12 /data/mysql/data/ibtmp1innodb_tmp_tablespaces_dir变量定义了创建会话临时表空间的位置。默认位置是数据目录中的#innodb_temp目录。
INNODB_SESSION_TEMP_TABLESPACES表提供有关会话临时表空间的元数据。
Information Schema INNODB_TEMP_TABLE_INFO表提供了关于用户创建的临时表的元数据这些临时表在INNODB实例中处于活动状态。 global temporary tablespace.
全局临时表空间ibtmp1存储对用户创建的临时表所做更改的回滚段。
innodb_temp_data_file_path
innodb_temp_data_file_path 变量定义全局临时表空间数据文件的相对路径、名称、大小和属性。如果没有为innodb_temp_data_file_path指定值则默认行为是在innodb_data_home_dir目录中创建一个名为ibtmp1的自动扩展数据文件。初始文件大小略大于12MB。