`

MySQL事务管理和存储引擎

 
阅读更多

MySQL架构

 

1MySQL的逻辑视图

 
MySQL的存储引擎架构可以将查询处理和服务器任务与数据的存储/提取相分离

第一层的主要作用是提供客户端和数据库之通信服务,例如连接处理

授权处理、安全认证等。

第二层是MySQL的核心。它提供了查询解析、优化缓存内建函数(日期、时间);同时各种的存储引擎提供的功能也在这一层体现,如存储过程、触发器、视图功能。

第三层是MySQL的存储引擎,存储引擎主要负责存储和提取所有存放在MySQL中的数据。在存储引擎中,锁管理是个非常重要的议题,常见的锁测量有表锁行锁,行锁已经在InnoDBFalcon存储引擎中已经实现。整个逻辑框图除存储引擎之外的部分都可以看做是服务器层。

2、事务管理

简而言之事物管理就是ACID的概念。

A:Atomicity原子性:一个事物需要被视为不可分割的一部分,整个事物包含的业务逻辑需要确保全部执行或全部回滚。

C:Consistency 一致性:数据库执行事物从一个状态到另外一个状态的转换,当事物操作失败时不会导致原有数据的丢失或改变。

I:Isolation 隔离性:是指事物的不可见性,当一个正在执行的事务正在执行时,中间结果对其他数据库用户不可见。

D:Durability 持久性:一旦一个事物执行完毕,那么数据库中已经改变的数据是永久存在的。

3 数据库的隔离级别

Read Uncommitted 读取未提交,一个事物在未提交之前其结果不能被其他用户可见,比如A用户修改了表user中某行记录的名词,在未提交事物之前,其它用户看到该行记录的名词任然是之前的名称,读取未提交是数据又称之为脏的读。

Read Committed 读取已提交,一个事务从开始到结束之间的任何中间结果都是不可见的,除非已经提交。用户查看同一语句的结果可能不同,又称之为不可重复读。

Repeatable Read 可重复读,它确保了同一个事务的多个实例并发读取数据时,看到相同的结果,但如果有其它事务插入数据,用户在读取数据时会有幻影行,幻读。

MySQL默认的隔离级别是读未提交,也是最低的隔离级别

例如可以通过如下语句查询:

Select @@tx-isolation;

也可通过如下的命令设置隔离级别:

Set session transaction isolation level read commtted

MySQL事务管理是在存储引擎实现的,因此MySQL存储引擎的不同也体现在存储引擎是否支持事物操作,例如InnoDB是支持事物操作的而MyISAM是不支持事物操作的。

3、常见的存储引擎

如何查看一个表的使用何种存储引擎可以通过如下命令

Show table status like ‘表名’;

MyISAM存储引擎

一般来讲,该引擎将每个表存储成两个文件:数据文件索引文件,分别为后缀为.MYD.MYI格式的文件。MyISAM格式是平台通用的,使用该存储引擎的表可以包含动态行和静态行,可容纳大大小只受限于磁盘空间的大小和操作系统所允许的最大文件大小。MySQL5默认含有可变长定义的MyISAM表可以支持256T的数据处理,并使用6字节的指针记录数据,用户也可在创建表时创建项MAX_ROWS AVG_ROW_LENGTH,用户可以使用该选项创建表的大小。

Create table tablename{

       Id integer not null primary key,

    Des char(18) not null

} MAX_ROW=1000000000 AVG_ROW_LENGTH = 32

查看结果

Show table status like ‘tablename’;

特性:加锁与并发,自动、手工修复,支持全文索引

InnoDB存储引擎

该引擎支持事物,特别是短期处理,不需要回滚的事物,并支持四种事物的隔离级别,但是不能根据排序建立索引,查询速度相对MyISAM比较

  • 大小: 8.9 KB
分享到:
评论

相关推荐

    MySQL技术内幕 InnoDB存储引擎.pdf

    1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 Checkpoint技术 2.3 Master Thread工作方式 2.4 InnoDB关键特性 3. 文件 3.1 参数文件 3.2 日志文件 3.3 套接字文件 3.4 pid文件 ...

    MySQL数据库:MySQL存储引擎.pptx

    InnoDB是事务型数据库的首选引擎,为MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎,其它存储引擎都是非事务安全表,支持行锁定和外键,MySQL5.5以后默认使用InnoDB存储引擎。 ;2.MyISAM

    mysql内核 innodb存储引擎

    《MySQL技术内幕:InnoDB存储引擎》是国内目前唯一的一本关于InnoDB的著作,由资深MySQL专家亲自执笔...《MySQL技术内幕:InnoDB存储引擎》适合所有希望构建和管理高性能、高可用性的MySQL数据库系统的开发者和DBA阅读。

    MySQL内核:InnoDB存储引擎 卷1.pdf

    《MySQL内核:InnoDB存储引擎 卷1》由资深MySQL专家,机工畅销图书作者亲自执笔,在以往出版的两本InnoDB介绍性图书的基础之上,更深入地介绍InnoDB存储引擎的内核,例如latch、B+树索引、事务、锁等,从源代码的...

    MySQL课程之MySQL存储引擎入门

    MySQL课程之MySQL存储引擎入门 MySQL 支持多种存储引擎,目前的存储引擎有 MyISAM 、 InnoDB 、 BDB 、 Memory 、 Merge 、 Archive 、 Federated...其中, InnoDB 、 NDB 、 BDB 支持事务,其他存储引擎都不支持事务。

    MySQL核心Innodb存储引擎浅析—事务系统

    MySQL核心Innodb存储引擎浅析—事务系统

    03-MySQL逻辑架构和Innodb存储引擎1

    MySQL逻辑架构和Innodb存储引擎MySQL逻辑架构和Innodb存储引擎MySQL 逻辑架构MySQL 存储引擎存储引擎概述知名的两大存储引擎事务并发控

    MySQL存储引擎之争-InnoDB与MyISAM全面对决

    本文深入对比分析了MySQL的两大存储引擎InnoDB和MyISAM之间的区别,包括事务支持、数据恢复能力、并发控制、存储空间占用和读取性能等多个维度。通过详细的技术和场景分析, objectively评估两者的优缺点,并给出选择...

    Innodb存储引擎浅析—事务系统

    Innodb存储引擎浅析—事务系统.

    如何选择合适的MySQL存储引擎

    MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎: ◆ MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。MyISAM在所有MySQL配置里被支持,它是默认的存储引擎,除非你配置MySQL默认...

    MySQL修改默认存储引擎的实现方法

    存储引擎负责管理数据存储,以及MySQL的索引管理。通过定义的API,MySQL服务器能够与存储引擎进行通信。目前使用最多的是MyISAM和InnoDB。InnoDB被Oracle收购后,MySQL自行开发的新存储引擎Falcon将在MySQL6.0版本...

    MySQL存储引擎MyISAM与InnoDB区别总结整理

    MyISAM存储引擎的特点是:表级锁、不支持事务和全文索引,适合一些CMS内容管理系统作为后台数据库使用,但是使用大并发、重负荷生产系统上,表锁结构的特性就显得力不从心; 以下是MySQL 5.7 MyISAM存储引擎的版本...

    mysql存储过程事务管理简析

    1,MySQL的事务支持 1)MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关: Sql代码 代码如下: MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持ACID事务、行级锁、并发 Berkeley DB:支持...

    MYSQL基础知识——逻辑结构、并发控制、事务、多版本控制和存储引擎

    本篇文章会简单对MYSQL的逻辑结构、并发控制、事务、多版本控制和存储引擎等知识点进行梳理。 1 MYSQL逻辑结构  MYSQL逻辑结构如图所示,最上层服务主要包括连接管理、授权认证等;第二层服务是整个MYSQL的核心层...

    详解mysql中的存储引擎

    mysql存储引擎概述 什么是存储引擎? MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同...

    MySQL+InnoDB存储引擎的一些参数.doc

    InnoDB做为MySQL目前最广泛的事务存储引擎,很多地方的设计和Oracle都是共通的。

    聊聊MySQL中的存储引擎

     在Oracle以及SqlServer等数据库中只支持一种存储引擎,故其数据存储管理机制都是一样的,而MySQL中提供了多种存储引擎,用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的...

    Mysql InnoDB引擎的索引与存储结构详解

    在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。 而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的...

    MySQL存储引擎基础知识

    在之前的文章中我们说过MySQL事务,现在大家都应该知道了MySQL事务了吧,还记得事务的ACID原则吗?不记得的童鞋可以回顾一下《MySQL之事务初识》,其实呀,更严谨一点的话,应该是MySQL InnoDB存储引擎,因为在MySQL...

    基于MySQL的存储引擎与日志说明(全面讲解)

    1.1 存储引擎的介绍 1.1.1 文件系统存储 文件系统:操作系统组织和存取数据的一种机制。文件系统是一种软件。...1.1.3 MySQL存储引擎种类 MySQL 提供以下存储引擎: InnoDB、MyISAM (最常用的两种) MEMORY、ARCHIVE

Global site tag (gtag.js) - Google Analytics