首页 > 其他分享 >存储引擎

存储引擎

时间:2024-03-19 22:15:05浏览次数:18  
标签:存储 TRANSACTION 隔离 事务 引擎 数据

一、MySQL体系结构

  • 连接层:最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。
  • 服务层:第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。
  • 引擎层:存储引擎真正的负责了MvSOL中数据的存储和提取,服务器通过AP和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。
  • 存储层:主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

二、存储引擎简介

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表而不是基于库的,所以存储引擎也可以被称为表引擎。

默认存储引擎是InnoDB。

START TRANSACTION 或 BEGIN TRANSACTION;

例:

START TRANSACTION;
call proc_zhuan_zhang(1000)

提交事务

COMMIT;

回滚事务:

ROLLBACK;

三、事务的四大特性

  • 原子性(Atomicity):事务是不可分割的最小操作但愿,要么全部成功,要么全部失败
  • 一致性(Consistency):事务完成时,必须使所有数据都保持一致状态
  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

四、并发事务问题

问题描述
脏读 一个事务读到另一个事务还没提交的数据
不可重复读 一个事务先后读取同一条记录,但两次读取的数据不同
幻读 一个事务按照条件查询数据时,没有对应的数据行,但是再插入数据时,又发现这行数据已经存在

五、并发事务隔离级别

隔离级别脏读不可重复读幻读
Read uncommitted
Read committed ×
Repeatable Read(默认) × ×
Serializable × × ×
  • √表示在当前隔离级别下该问题会出现
  • Serializable 性能最低;Read uncommitted 性能最高,数据安全性最差
#查看事务隔离级别:
SELECT @@TRANSACTION_ISOLATION;
#设置事务隔离级别:
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE };
SESSION 是会话级别,表示只针对当前会话有效,GLOBAL 表示对所有会话有效

标签:存储,TRANSACTION,隔离,事务,引擎,数据
From: https://www.cnblogs.com/cheng8/p/18084075

相关文章

  • MySQL——数据库备份上传到阿里云OSS存储
    前言基于阿里云的OSS存储对数据库进行备份,阿里云ossutil安装文档还是比较详细的,直街参考阿里云文档操作就好了ossutil:https://help.aliyun.com/zh/oss/developer-reference/overview-59内容根据ossutil安装配置好命令行工具,然后直接写相应的脚本就好了,如果存在大表建议单独导......
  • Garnet: 力压Redis的C#高性能分布式存储数据库
    今天看到微软研究院开源了一个新的C#项目,叫Garnet,它实现了Redis协议,可以直接将Redis替换为Garnet,客户端不需要任何修改。根据其官网的信息,简单的介绍一下它。开源仓库地址:https://github.com/microsoft/garnet文档地址:https://microsoft.github.io/garnet/Garnet是微软研究院基......
  • C语言浮点数存储原理
    1.浮点型的原理介绍及在内存中的存储形式C语言提供了浮点数据类型,单精度浮点数float和双精度浮点数double。浮点数属于不精确的数据类型,本文将通过float类型的原理和在内存中的存储形式来介绍浮点型不精确的原因。以float类型为例,来展示C语言中浮点型的神秘之处。2.float类型......
  • 浮点数在内存中的存储
    在了解浮点数在内存中的存储之前,我们先了解一下整数在内存中的存储。整数就是直接以二进制的形式存储且存的都是补码,其有正负数之分,整数的原码、反码、补码相同,负数则是原码按位取反得反码,反码+1=补码,如果是负数,其最高位为1(其从原码到补码得过程中符号位不参与运算),如果是正数,......
  • 云存储系统的构成
    原文链接:https://answer.baidu.com/answer/land?params=ySNqY0HWoA4cK43GwScAIBUWbFlVAqDrZB05TtzSYR0d5QwcZGfOEU9t8MCuqPdk7wb9nRRb43GtGuc6KnxMDVikHPIPspwi450mrJ2Ab%2Bq2lLllaWdOXxtvMms9RZpx3MvJV3%2FWPfwvtDAqXz9RB2VPxXggJK29Nb4rbKweLr2Jtx%2FnJz5UbCUBMn6K3UnvLZT5yoDV......
  • C语言 数据在内存中的存储
    目录前言一、整数在内存中的存储二、大小端字节序和字节序判断2.1.练习一2.2练习二2.3练习三2.4练习四2.5练习五2.6练习六三、浮点数在内存中的存储3.1 浮点数存的过程3.2浮点数取的过程总结前言数据在内存中根据数据类型有不同的存储方式,今天我们......
  • C语言-整数与浮点数:内存存储的差异
    整数与浮点数在内存中的存储机制在计算机科学中,整数和浮点数是我们经常处理的两种数据类型。它们在内存中的存储方式决定了它们可以表示的范围、精度以及如何进行数学运算。了解这些基本概念对于理解计算机如何处理这些数据以及优化相关代码至关重要。整数在内存中的存储整......
  • pinia在登录页面持久化存储
    安装pinianpminstallpinia创建一个store/index.jsimport{createPinia}from'pinia'//从pinia模块导入createPinia函数。Pinia是Vue.js的一个状态管理库,createPinia函数用于创建一个新的Pinia实例importpiniaPluginPersistfrom'pinia-plugin-persist'//pinia-plug......
  • windows11安装SQL server数据库报错等待数据库引擎恢复句柄失败(二)
    windows11安装SQLserver数据库报错等待数据库引擎恢复句柄失败(二),昨天在给网友远程的时候发现了一个新的问题。计算机系统同样是Windows11,通过命令查出来的扇区相关结果也都是4096,但是最后的安装还是提示SQLserver数据库报错等待数据库引擎恢复句柄失败扇区修改详情可以......
  • mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
    时间:2018-03-2617:58:45一、首先说下本篇博客所实现功能的背景和功能是怎样的:   背景:因为公司项目开始迁移新平台项目,所以以前的平台老数据以及订单信息需要拆分表,而且需要业务逻辑来分析以前的订单表,来拆分成另外的几个新表,包括增加新的流水分析,以及更新其他用户或者......