Mysql的储存引擎

储存引擎介绍

1. 文件系统
操作系统存取数据的一种机制
2. 文件系统类型
不管使用什么文件系统,数据内容不会变化
不同的是,存储空间、大小、速度
3. MySQL存储引擎
可以理解为,MySQL的“文件系统”,只不过功能更加强大
4. MySQL存储引擎功能
数据读写
数据安全和一致性
提高性能
热备份
自动故障恢复
高可用方面支持

MySQL储存引擎分类

1. MySQL提供的存储引擎类型如下:
InnoDB
MyISAM
CSV
MEMORY
ARCHIVE
#查看支持的存储引擎
show engines; 
#查看所有InnoDB的表
select table_schema,table_name,engine
from information_schema.tables
where engine='innodb';
#查看所有MyISAM的表
select table_schema,table_name,engine
from information_schema.tables
where engine='myisam';

2.其他MySQL分支的存储引擎
PeconaDB:默认XtraDB
MariaDB:默认InnoDB

3.其他存储引擎(压缩比高,插入数据性能更高)
TokuDB
RocksDB
MyRocks

4.InnoDB和MyISAM的区别
物理上的区别
InnoDB:
.frm:数据列信息
.ibd:数据行和索引信息
MyISAM:
.frm:数据列信息
.MYD:数据行信息
.MYI:索引信息
特性上的区别
InnoDB:支持事物,行锁,MVCC多版本并发控制,支持外键,支持热备,支持自动故障恢
复(CSR)
事务(Transaction)
MVCC(Multi-Version Concurrency Control多版本并发控制)
行级锁(Row-level Lock)
ACSR(Auto Crash Safey Recovery)自动的故障安全恢复
支持热备份(Hot Backup)
复制Replication: Group Commit , GTID (Global Transaction ID) ,多线程(MTS,MultiThreads-SQL )
MyISAM:不支持

5.查看存储引擎
#1.查看会话存储引擎
SELECT @@default_storage_engine;
show variables like '%engine%';
#2.查看指定表的存储引擎
SHOW CREATE TABLE city\G;
SHOW TABLE STATUS LIKE 'city'\G
#3.查看所有表的存储引擎
select table_schema,table_name,engine
from information_schema.tables
where table_schema not in
('sys','mysql','information_schema','performance_schema');

6.设置存储引擎
#1.临时修改存储引擎,重启失效
#1)当前会话
set default_storage_engine=innodb;
#2)新会话(全局)
set global default_storage_engine=innodb;
#2.永久修改存储引擎
#1)修改配置文件
vim /etc/my.cnf
[mysqld]
default_storage_engine=innodb
#2)创建表指定存储引擎
create table t (i INT) engine=innodb;
#3)修改指定表的存储引擎
alter table city engine innodb;

表空间概述

1.MySQL数据文件类型
ib_buffer_pool:热数据缓存数据,下次启动优先加载
ibdata1:系统数据字典信息(整个数据库统计信息,表的元数据),UNDO(回滚)表空间等数据。
又被称为共享表空间
ib_logfile0 ~ ib_logfile1: REDO(重做日志)日志文件,事务日志文件
ibtmp1: 临时表空间磁盘位置,存储临时表
frm:存储表的列信息
ibd:表的数据行和索引

2.共享表空间
需要将所有数据存储到同一个表空间中 ,耦合性大,管理比较混乱
5.5版本出现的管理模式,也是默认的管理模式。(数据字典,undo,临时表,索引,表数据)
mysqldump -uroot -p123 -A --triggers -R --master-data=2 >/tmp/full.sql
sed -i 's#ENGINE=MyISAM#ENGINE=INNODB#g' /tmp/full.sql
mysql -uroot -p123 < /tmp/full.sql
5.6版本以前,共享表空间保留,只用来存储:数据字典信息,undo,临时表。
5.7版本,临时表被独立出来了
8.0版本,undo也被独立出去了

 

事务概述

1.事务介绍
主要针对DML语句(insert,update,delete)的一组数据操作执行步骤,这些步骤被视为一个工作单元
1)用于对多个语句进行分组
2)在在多个客户端并发访问同一个表中的数据时使用
3)如果所有步骤都成功,则执行
4)如果步骤出现错误或不完整,则取消

2.事务特性-ACID
Atomic(原子性)
所有语句作为一个单元全部成功执行或全部取消。
Consistent(一致性)
如果数据库在事务开始时处于一致状态,则在执行该事务期间将保留一致状态。
Isolated(隔离性)
事务之间不相互影响。
Durable(持久性)
事务成功完成后,所做的所有更改都会准确地记录在数据库中。所做的更改不会丢失。

3.事务控制语句
#1.自动提交
#查看自动提交
mysql> show variables like 'autocommit';
#临时关闭
mysql> set autocommit=0;
#永久关闭
[root@db01 world]# vim /etc/my.cnf
[mysqld]
autocommit=0

4.隐式事务提交
现在版本在开启事务时,不需要手工begin,只要你输入的是DML语句,就会自动开启事务。
有些情况下事务会被隐式提交
在事务运行期间,手工执行begin的时候会自动提交上个事务
在事务运行期间,加入DDL、DCL操作会自动提交上个事务
在事务运行期间,执行锁定语句(lock tables、unlock tables)
load data infile 
在autocommit=1的时候(默认就开启了自动提交,生产环境需要关闭)

事务日志

mysql的工作机制
1.所有的操作都在内存进行
2.优先写日志
3.先看redo,在看undo 

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

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

相关文章

【C++精简版回顾】13.运算符重载+,前置后置++

1.友元函数方式为类重载运算符 &#xff08;友元函数声明可以放在类任何地方&#xff09; 1.类 class MM { public:MM() {}MM(int grade,string name):grade(grade),name(name){}friend MM operator(MM object1, MM object2);void print() {cout << this->grade <…

19.2 基于SpringBoot电商项目:一刷

19.2 基于SpringBoot电商项目一刷 1. 项目介绍2. 准备阶段2.1 idea插件 1. 项目介绍 2. 准备阶段 2.1 idea插件

Java 小项目开发日记 03(文章分类接口的开发)

Java 小项目开发日记 03&#xff08;文章分类接口的开发&#xff09; 项目目录 配置文件&#xff08;pom.xml&#xff09; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocat…

【OpenGauss源码学习 —— 执行算子(Nest Loop 算子)】

执行算子&#xff08;Nest Loop 算子&#xff09; 概述Nest Loop 算子ExecInitNestLoop 函数ExecNestLoop 函数ExecEndNestLoop 函数ExecReScanNestLoop 函数 总结 声明&#xff1a;本文的部分内容参考了他人的文章。在编写过程中&#xff0c;我们尊重他人的知识产权和学术成果…

油库雷电预警监控系统是什么

TH-LD1油库&#xff0c;作为石油石化企业的核心设施&#xff0c;储存着大量的易燃易爆的石油产品。然而&#xff0c;油库本身具有较大的安全隐患&#xff0c;其中最为显著的就是雷电对油库安全的影响。一旦发生雷击事故&#xff0c;不仅可能导致设备损坏&#xff0c;还可能引发…

MySQL表分区技术介绍

目录 1. 分区概述 1.1 表分区 1.2 表分区与分表的区别 1.3 表分区的好处 1.4 分区表的限制因素 2. 如何判断当前MySQL是否支持分区&#xff1f; 3. 分区类型详解 3.1 MySQL支持分区类型 3.2 RANGE分区 3.2.1 根据数值范围分区 3.2.2 根据TIMESTAMP范围分区 3.2.3 根…

DevEco Studio下载与安装(Windows)

下载地址&#xff1a; HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装时直接点击 next 即可。 运⾏已安装的DevEco Studio&#xff0c;⾸次使⽤&#xff0c;请选择Do not import settings&#xff0c;单击OK。 1.安装Node.js 如果本地有下载&#xff0c;可以…

LDR6328 PD诱骗芯片:优化小家电Type-C接口充电体验与安全性的关键技术

随着科技的日新月异&#xff0c;小家电设备日趋智能化&#xff0c;Type-C接口因其便捷性在小家电领域的应用也日益增多。然而&#xff0c;Type-C接口的多样性导致设备在识别和使用不同充电方式时面临挑战。为应对这一问题&#xff0c;PD诱骗芯片应运而生&#xff0c;成为解决充…

petalinux-config : command not found 和petalinux-build: command not found

发现这两个问题都是因为&#xff1a;没有先设置 petalinux 的作环境 先输入命令 先执行 source /opt/pkg/petalinux/2020.2/settings.sh 或者 sptl 然后切换目录&#xff0c;到相应的目录&#xff0c;就可以了

力扣550 游戏玩法分析 IV

目录 题目描述 思路整理 1. 首次登录日期 2. 第二天登录 3. 计算比率 实现思路 完整代码及解释 题目描述 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | ev…

SpringCloudNacos注册中心服务分级存储模型

文章目录 服务分级存储模型概述配置集群同集群优先的负载均衡 权重配置总结 之前对 Nacos注册中心入门 已经做了演示. 这篇文章对 Nacos 的服务分级存储模型做理论与实践. 服务分级存储模型概述 一个服务可以有多个实例&#xff0c;例如我们的 user-server&#xff0c;可以有:…

算法修炼-动态规划之斐波那契数列模型

一、动态规划的算法原理 这是本人动态规划的第一篇文章&#xff0c;所以先阐述一下动态规划的算法原理以及做题步骤。动态规划本人的理解就是通过题目所给的条件正确地填满dp表&#xff08;一段数组&#xff09;。首先要先确定好dp表每个位置的值所代表的含义是什么&#xff0c…