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>
表空间
表空间的类型
- 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)
[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。
相关文章:
MySQL 8.0 OCP认证精讲视频、环境和题库之五 事务、缓存
redo log buffer: 缓存与事务有关的redo log ,用来对mysql进行crash恢复,不可禁用; 日志缓冲区是存储要写入磁盘上日志文件的数据的内存区域。日志缓冲区大小由innodb_Log_buffer_size变量定义。 默认大小为16MB。日志缓冲区的内容会定…...
ACL配置
目录 1.使用基本ACL配置交换telnet访问的权限 2.使用高级ACL配置流分类实现限制互访某一台服务器 3.使用二层ACL配置流分类拒绝指定报文通过 4.通过流策略实现策略路由(重定向到不同的下一跳) 5.通过流策略实现不同网段间限制互访 6.通过流策略实现限速功能 7.通过流策略…...
微信小程序修改van-popup的背景颜色
效果图: van-popup背景颜色渐变 使用深度修改样式不生效,直接在 custom-style里面修改即可; <van-popup position"bottom"custom-style"height:25%;background:linear-gradient(95deg, #F8FCFF -0.03%, #EDF5FF 64.44…...
SpringCloud-Nacos
一、介绍 (1)作为服务注册中心和配置中心 (2)等价于:EurekaConfigBus (3)nacos集成了ribbon,支持负载均衡 二、安装 (1)官网 (2) …...
动态规划12(Leetcode221最大正方形)
代码: class Solution {public int maximalSquare(char[][] matrix) {int m matrix.length;int n matrix[0].length;int[][]area new int[m][n];area[0][0] matrix[0][0];int max 0;for(int i0;i<m;i){area[i][0] matrix[i][0]1? 1:0;max Math.max(area…...
【Git】bad signature 0x00000000 index file corrupt. fatal: index file corrupt
问题描述 电脑写代码时蓝屏。重启后 git commit 出错。 error: bad signature 0x00000000 fatal: index file corrupt原因分析 当电脑发生蓝屏或异常关机时,Git 的索引文件可能损坏。 解决方案 删除损坏的索引文件。 rm -Force .git/index回退到上一个可用的版…...
GO 语言的函数??
函数是什么? 学过编程的 xdm 对于函数自然不会陌生,那么函数是什么呢? 函数是一段可以重用的代码块,可以被多次调用,我们可以通过使用函数,提高咱们代码代码的模块化,提高程序的可读性和可维护…...
机器学习基础之《回归与聚类算法(3)—线性回归优化:岭回归》
一、什么是岭回归 其实岭回归就是带L2正则化的线性回归 岭回归,其实也是一种线性回归。只不过在算法建立回归方程时候,加上L2正则化的限制,从而达到解决过拟合的效果 二、API 1、sklearn.linear_model.Ridge(alpha1.0, fit_interceptTrue…...
DirectX3D 正交投影学习记录
所谓正交投影变换,就是已知盒状可视空间内任意点坐标(x,y,z),求解垂直投影到xy平面的对应点坐标。 按照这个定义,xyz坐标系本身就是正交坐标系,盒状可视空间内任意点的坐标(x,y,z)投影到(x,y)平面,只要简单地丢弃z坐标…...
数据挖掘十大算法--Apriori算法
一、Apriori 算法概述 Apriori 算法是一种用于关联规则挖掘的经典算法。它用于在大规模数据集中发现频繁项集,进而生成关联规则。关联规则揭示了数据集中项之间的关联关系,常被用于市场篮分析、推荐系统等应用。 以下是 Apriori 算法的基本概述&#x…...
[蓝桥杯 2022 省 B] 统计子矩阵
题目描述 给定一个 NM 的矩阵 A,请你统计有多少个子矩阵 (最小 11, 最大 NM) 满足子矩阵中所有数的和不超过给定的整数 K。 输入格式 第一行包含三个整数 N, M和 K。 之后 N 行每行包含 M 个整数, 代表矩阵 A。 输出格式 一个整数代表答案。 输入输出样例 输入 #1 3…...
解决在部署springboot项目的docker中执行备份与之相连接的mysql容器命令
文章目录 问题描述解决思路问题解决容器构建mysql客户端安装容器与主机的交互docker中执行 mysqldump 命令解决mysql8密码验证问题解决密码插件警告 问题描述 由于,使用1panel可视化的面板来部署springboot项目,可以很方便地安装和使用mysql,…...
正文Delphi XE Android下让TMemo不自动弹出键盘
用TMemo来显示一段说明文字,可一点Memo,就弹出键盘,找了半天控制键盘的属性,没找到。最后将readOnly设置为True搞定。 如果需要一个form都不显示keyboard,那么可以利用全局变量 VKAutoShowMode来控制,这个全局变量可以有下面三个值…...
[1Panel]开源,现代化,新一代的 Linux 服务器运维管理面板
测评介绍 本期测评试用一下1Panel这款面板。1Panel是国内飞致云旗下开源产品。整个界面简洁清爽,后端使用GO开发,前端使用VUE的Element-Plus作为UI框架,整个面板的管理都是基于docker的,想法很先进。官方还提供了视频的使用教程&…...
PG集合查询
1.运算符 1.1 union并集 连接上下语句 union distinct连接并且去重 all不去重 1.2 intersect交集 上下交集 distinct连接并且去重 all不去重 1.3 except除外 上面除了下面 distinc去重 all不去重...
目标检测应用场景和发展趋势
参考: 目标检测的未来是什么? - 知乎 (zhihu.com)https://www.zhihu.com/question/394900756/answer/32489649815大应用场景 1 行人检测: 遮挡问题:行人之间的互动和遮挡是非常常见的,这给行人检测带来了挑战。非刚性…...
Confluence 自定义博文列表
1. 概述 Confluence 自有博文列表无法实现列表自定义功能,实现该需求可采用页面中引用博文宏标签控制的方式 2. 实现方式 功能入口: Confluence →指定空间→创建页面 功能说明: (1)页面引用博文宏 (…...
chrome历史版本下载
chrome历史版本下载 windows Google Chrome all versions on Windows linux版本 Google Chrome 64bit Linux版_chrome浏览器,chrome插件,谷歌浏览器下载,谈笑有鸿儒...
Messari发布Moonbeam简报,每日交易量稳步增长,首次公布利润数据
区块链数据公司Messari首次发布Moonbeam项目分析简报,从项目市值、链上数据表现、质押以及Moonbeam的技术优势XCM使用量等角度全面分析。这个再熊市初期上线的项目一直在默默开发,并在跨链互操作领域拥有了相当的实操成绩。我们翻译了Messari简报中的部分…...
数据库 锁、索引、在实际开发中怎么设置和优化
数据库锁和索引是数据库管理的两个重要方面,它们对于确保数据的一致性和提高查询性能具有重要作用。在实际开发中,正确地设置和优化锁和索引对于构建高效、稳定的系统至关重要。下面是一些关于如何在实际开发中设置和优化锁和索引的建议: 锁…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
