MySQL 8.0 OCP认证精讲视频、环境和题库之五 事务、缓存

 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> 
    [root@student ~]# ls  /data/mysql/data/*logfile*
    /data/mysql/data/ib_logfile0  /data/mysql/data/ib_logfile1
    组中共有两个logfile
    [root@student ~]# du -m  /data/mysql/data/*logfile*     #48MB
    48    /data/mysql/data/ib_logfile0
    48    /data/mysql/data/ib_logfile1
    [root@student ~]# 
    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> 
  修改日志组和日志文件大小
    [root@student ~]# systemctl stop mysql
    [root@student ~]# cat  /etc/my.cnf
    [mysqld]
    datadir=/data/mysql/data/
    socket=/data/mysql/mysql.sock

    innodb_buffer_pool_chunk_size=64M
    innodb_buffer_pool_size=256M

    innodb_log_file_size=100M
    innodb_log_files_in_group=4
    
   [root@student ~]# 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      |
    +------------------------------------+-----------+
    [root@student ~]# 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
    [root@student ~]# 
    
    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所支持的存储引擎
mysql>show 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)

#体现要么全部成功,要么全部失败

LAMP:Linux Apache mysql PHP


加锁的级别:


    InnoDB:行级锁
    MyISAM:表级锁
数据字典:系统表
表空间:一种逻辑结构,用于组织表和索引,位于表和数据文件之间

实验1:存储引擎


1、创建数据库testdb,进入数据库
    create databases testdb;
    use testdb;
2、 创建表t1,存储引擎为myisam
    create table t1(id integer) engine=myisam
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) engine=innodb;
    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> 
 

表空间

表空间的类型

  1.     System Tablespace
  2.     Undo Tablespaces
  3.     General Tablespaces
  4.     File-Per-Table Tablespaces
  5.     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)

[root@student ~]# 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_size=64M
innodb_buffer_pool_size=256M

innodb_log_file_size=100M
innodb_log_files_in_group=4

#innodb_data_file_path=ibdata1: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。

[root@student ~]# du -m  /data/mysql/data/ibtmp1
12    /data/mysql/data/ibtmp1
innodb_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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/162617.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频标注是什么?和图像数据标注的区别?

视频数据标注是对视频剪辑进行标注的过程。进行标注后的视频数据将作为训练数据集用于训练深度学习和机器学习模型。这些预先训练的神经网络之后会被用于计算机视觉领域。 自动化视频标注对训练AI模型有哪些优势 与图像数据标注类似,视频标注是教计算机识别对象…

Unity之ShaderGraph如何实现卡通效果

前言 今天我们来实现一下最常见的卡通效果。 效果如下: 关键节点 Remap:基于输入 In 值在输入In Min Max的 x 和 y 分量之间的线性插值,返回输入Out Min Max的 x 和 y 分量之间的值。 SampleGradient:在给定Time输入的情况下…

【网络协议】聊聊DHCP和PXE 工作原理

DHCP 动态主机配置协议 对于每个主机来说,只要连接了网络,那么就会配置一个IP地址,那么这个IP地址,如果是手动配置的话,对于公司内部的人员来说都要找IT进行配置,这个太浪费人力物力了,所以解决…

.NET验收

验收通用模板: 1.该资料计划看几天? 实际看了几天? 计划7天,实际看了9天 2.多少天一篇总结?将总结列出来。 一周总结一篇。 博客地址:3.这个资料相较于之前资料共同的内容是什么? 不同的(需要强化学习)…

macOS Sonoma 14.1RC(23B73)发布

黑果魏叔10 月 18 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14.1 RC更新(内部版本号:23B73),本次更新距离上次发布隔了 7 天。 macOS Sonoma 14.1RC(23B73)的更新内容主要包括以下方面&…

轻重链剖分+启发式合并专题

Codeforces-741D(Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths) 一棵根为1 的树,每条边上有一个字符(a-v共22种)。 一条简单路径被称为Dokhtar-kosh当且仅当路径上的字符经过重新排序后可以变成一个回文串。 求每个子树中…

0基础学习PyFlink——Map和Reduce函数处理单词统计

在很多讲解大数据的案例中,往往都会以一个单词统计例子来抛砖引玉。本文也不免俗,例子来源于PyFlink的《Table API Tutorial》,我们会通过几种方式统计不同的单词出现的个数,从而达到循序渐进的学习效果。 常规方法 # input.py …

Python configparser模块使用教程

文章目录 .ini 拓展名文件简介.ini 文件格式1. 节2. 参数3. 注解 configparser 模块简介configparser 模块的初始化和读取获取 ini 中所有 section获取 section 下的 key获取 section 下的 value获取指点section的所用配置信息修改某个key,如果不存在则会出创建检查…

中文编程开发语言工具编程案例:计时计费管理系统软件连接灯控器编程案例

中文编程开发语言工具编程案例:计时计费管理系统软件连接灯控器编程案例 中文编程开发语言工具编程案例:计时计费管理系统软件连接灯控器编程案例 中文编程系统化教程,不需英语基础。学习链接 https://edu.csdn.net/course/detail/39036

Unity之ShaderGraph如何实现积雪效果

前言 我们在一些特殊场景,比如冰雪天,经常会对周围物体添加一些积雪效果,如果我们直接把积雪做到模型上,就无法更加灵活的表现其他天气的环境了,比如春夏秋冬切换。所以一般这种需求我们都是使用Shader来表现。 入下图…

java学生通讯录管理系统

设计要求 本课程设计,涉及输入输出、GUI设计、数据库操作等本课程重要概念和编程技能,全面巩固和加深学生对java程序设计的相关概念的理解,全面强化java编程技能,培养学生综合运用所学知识和技能分析问题和解决问题的能力。培养学…

Windows运维相关经验技巧

常用工具 在线PS Photoshop在线 FAQ 电脑能上网,浏览器上不了网 # 错误原因: 设置了网络代理,浏览器无法通过网络代理上网# 解决办法 关闭网络代理 (1)wini,打开设置 (2)网络和I…

【YOLO】拾遗(五)

0 YOLO系列笔记 【YOLO】朴实无华的yolov5环境配置(一) 【YOLO】yolov5训练自己的数据集(二) 【YOLO】目标识别模型的导出和opencv部署(三) 【YOLO】语义分割和实例分割(四) 1 …

R语言进度条:txtProgressBar功能使用方法

R语言进度条使用攻略 在数据处理、建模或其他计算密集型任务中,我们常常会执行一些可能需要很长时间的操作。 在这些情况下,展示一个进度条可以帮助我们了解当前任务的进度,以及大约还需要多长时间来完成,R语言提供了几种简单且灵…

c# xml 参数读取读取的简单使用

完整使用之测试参数的读取(xml) 保存一个xml文档(如果没有就会生成一个默认的 里面的参数用的是我们默认设置的),之后每次更改里面的某项,然后保存 类似于重新刷新一遍。 这里所用的xml测试参数前面需要加…

从零开始搭建第一个django项目

目录 配置环境创建 Django 项目和 APP项目组成  ‍子目录文件组成应用文件组成 配置 settings.py启动项目 数据表创建models.pyDjango-models的常用字段和常用配置 Django-admin 引入admin后台和管理员外键views.pyurls.pypostman接口测试 QuerySetInstance功能APIView 的概念…

vue 自定义指令 -- 指令的值

vue 自定义指令 – 指令的值 **创建 工程: H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day05\准备代码\05-自定义指令-指令的值 vue --vers…

ASP.NET framework升级core .NET 6.0

C# ASP.NET framework 升级core .NET 6.0 .NET 7.0 .NET 8.0 或者以上 .net framework、.net standard、.net core .net 5/6/7/8 区别_.net 6.0和.net framework的区别-CSDN博客 using System.Web.Http; using HttpPostAttribute Microsoft.AspNetCore.Mvc.HttpPostA…

python web开发(四): Bootstrap

1.初步了解 别人已经写好的CSS样式&#xff0c;我们可以直接引用 下载 Link-BootStrap 解压&#xff0c;并放入到当前项目中 引用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</tit…

MySQL-逻辑架构

MySQL-逻辑架构 1.逻辑架构剖析 1.1服务器处理客户端请求 MySQL属于典型的C/S架构&#xff0c;客户端进程发送请求&#xff0c;服务端进程处理请求。处理的基本流程如下。 MySQL的逻辑架构如下&#xff1a; Connectors&#xff1a;与服务端程序连接的程序。 Manager Servic…