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.mzph.cn/news/109793.shtml

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

相关文章

QTday02(常用类、UI界面下的开发、信号与槽)

今日任务 1. 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin"&#x…

v-model表单数据双向绑定-表单提交示例

示例如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>v-model表单数据双向绑定<…

【17.19消失的两个数字】

目录 一、题目描述二、算法原理三、代码实现 一、题目描述 二、算法原理 三、代码实现 class Solution { public:vector<int> missingTwo(vector<int>& nums) {//找到a^bint temp0;for(auto num:nums){temp^num;}for(int i1;i<nums.size()2;i){temp^i;}//找…

Flink测试利器之DataGen初探 | 京东云技术团队

什么是 Flinksql Flink SQL 是基于 Apache Calcite 的 SQL 解析器和优化器构建的&#xff0c;支持ANSI SQL 标准&#xff0c;允许使用标准的 SQL 语句来处理流式和批处理数据。通过 Flink SQL&#xff0c;可以以声明式的方式描述数据处理逻辑&#xff0c;而无需编写显式的代码…

React 路由总结 react-router-dom6+react-router-dom5

开题 单页面应用和多页面应用 SPA&#xff1a;单页面应用程序&#xff0c;整个应用中只有一个页面(index.html) MPA&#xff1a;多页面应用程序&#xff0c;整个应用中有很多页面(*.html) react路由 现在的前端应用大多都是SPA单页面应用程序&#xff0c;也就是一个HTML页面的…

百度OCR识别图片文本字符串——物联网上位机软件

一、开发背景 根据项目需求&#xff0c;我们需要完成LED显示屏实时显示歌词的效果。最优的方法是调用歌曲播放器的API获取歌词&#xff0c;但是由于这个开发资格不是很好申请&#xff0c;因此我们采用其他方案&#xff0c;即通过OCR识别获取歌词&#xff0c;并投射到LED显示屏上…

ExposureDiffusion: Learning to Expose for Low-light Image Enhancement论文阅读笔记

南洋理工大学、鹏城实验室、香港理工大学在ICCV2023发表的暗图增强论文。用diffusion模型来进行raw图像暗图增强&#xff0c;同时提出了一个自适应的残差层用来对具有不同信噪比的不同区域采取不同的去噪策略。 方法的框图如下所示&#xff1a; 一张raw图片可以由信号和噪声…

Maven 基础教程系列

Maven是一个项目开发管理和理解工具。基于项目对象模型的概念&#xff1a;构建、依赖关系管理、文档创建、站点发布和分发发布都由pom.xml声明性文件控制。Maven可以通过插件进行扩展&#xff0c;以使用许多其他开发工具来报告或构建过程。 一、Maven 使用教程-CSDN博客 二、…

Eclipse Xtext 实现PLC ST 语言到C的转换

Eclipse Xtext 是开发领域专用语言&#xff08;DSL&#xff09;的工具。例如数据库的SQL 语言&#xff0c;PLC 的ST 语言都是一种领域专用语言。在开放自动化领域&#xff0c;提倡基于模型的设计方法。DSL 是描述模型的强有力工具。 在开发PLC 程序IDE时&#xff0c;开发ST编译…

网络安全内网渗透之信息收集--systeminfo查看电脑有无加域

systeminfo输出的内容很多&#xff0c;包括主机名、OS名称、OS版本、域信息、打的补丁程序等。 其中&#xff0c;查看电脑有无加域可以快速搜索&#xff1a; systeminfo|findstr "域:" 输出结果为WORKGROUP&#xff0c;可见该机器没有加域&#xff1a; systeminfo…

LeetCode【17】电话号码的字母组合

题目&#xff1a; 思路&#xff1a; 参考&#xff1a;https://blog.csdn.net/weixin_46429290/article/details/121888154 和上一个题《子集》的思路一样&#xff0c;先画出树结构&#xff0c;看树的深度&#xff08;遍历层级&#xff09;&#xff0c;树的宽度&#xff08;横向…

10.18作业

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

C++11——包装器与lambda表达式

目录 一.背景 二.lambda 1.见一见lambda 2.lambda表达式语法 3.lambda捕捉列表说明 三.函数对象与lambda表达式 四.包装器 1.function包装器 2.包装类的成员函数 五.bind 1.调整参数位置 2.减少函数参数 一.背景 在C98中&#xff0c;如果想要对一个数据集合中的元素…

成都瀚网科技:如何有效运营抖店来客呢?

随着电子商务的快速发展和移动互联网的普及&#xff0c;越来越多的企业开始将目光转向线上销售渠道。其中&#xff0c;抖音成为备受关注的平台。作为中国最大的短视频社交平台之一&#xff0c;抖音每天吸引数亿用户&#xff0c;这也为企业提供了巨大的商机。那么&#xff0c;如…

F5.5G落进现实:目标网带来的光之路

数字化与智能化的世界将走向何方&#xff1f;这个问题有着非常复杂的答案&#xff0c;但其中有一个答案已经十分清晰。那就是智能化的下一步&#xff0c;必将走向泛在万兆的世界。 网络是算力联接的底座&#xff0c;是智能演化的基础。纵观每一代数字化升级&#xff0c;都可以发…

代码随想录Day22 LeetCode T39 组合总和 T40 组合总和II T131 分割回文串

LeetCode T39 组合总和 题目链接:39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 树形图 题目思路: 这我们会发现和昨天的题目很像,只是这里的元素并不是只能选取一次了,我们可以根据代码画出树形图来解决问题,下面我们开始递归三部曲 首先我们先定义出result和path数…

亲,手撸图文博文太累了?试试这个神器!

这一篇博客有关如何使用[InternLM-XComposer]来写图文并茂的博文。InternLM-XComposer是一个基于人工智能的创作工具&#xff0c;它可以根据你的输入生成不同类型的内容&#xff0c;例如文章、诗歌、歌词、代码等。你可以使用它来创作有趣和有创意的博客&#xff0c;同时也可以…

C# OpenCvSharp 利用Lab空间把春天的场景改为秋天

效果 项目 代码 using OpenCvSharp; using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace OpenCvSharp_Demo {public partial class Form1 : Form{public Form1(){InitializeComponent();}st…

免费:实时 AI 编程助手 Amazon CodeWhisperer

点 &#xff0c;一起程序员弯道超车之路 现已正式推出实时 AI 编程助手 Amazon CodeWhisperer&#xff0c;包括 CodeWhisperer 个人套餐&#xff0c;所有开发人员均可免费使用。最初于去年推出的预览版 CodeWhisperer 让开发人员能够保持专注、高效&#xff0c;帮助他们快速、安…

如何管理前端状态?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…