小贝_mysql 存储引擎及事务概念

存储引擎及事务概念

简要:

1、什么是存储引擎

2、什么是事务

一、存储引擎

通俗地讲就是存储和管理数据的方式

形象例子:

某处地方的自行车管理员:李某,张某。每天都有很多人来存取自行车。李某的管理方式是: 车主自行存放,李某也不记录对方存的是什么车。取车时则要交管理费。也不检查取的是否是对方自己的车。相反,张某,则在车主存放车时,记录存放人的特征以及对应车的信息。当人来取车时,张某还要小心核对,人与车的特征是否对应。

从上述例子可知:

a、从效率的角度来看: 李某比张某快,因为其不用进行校对

b、从安全性的角度来看: 张某比李某要安全,因为其进行了校对。

总结: 实际上,mysql的存储引擎也是这样工作,每种存储引擎都有自身的存取方式,因此在选择上,应该根据实际情况来定。

1、如何查看mysql的引擎

mysql> show engines;

2、常用的存储引擎myisam与innodb的区别

2.1、myisam: 批量插入速度快,不支持事务,表锁

innodb:批量插入速度相对较慢,支持事务,行锁

二、事务

通俗地理解,指一组操作,要么都成功执行,要么都不执行。

例如:

用户A给用户B转账500元

先分析下这个流程:

1、判断用户A的卡余额是否大于500元,否则,则无法进行转账操作

2、在满足大于500元的基础上,用户A给用户B进行转账

3、转账操作成功,则用户A的卡余额减去500元,用户B加上500元

用程序描述下这个过程

</pre><p><pre name="code" class="php"><?php
$userA = $momeyA;
$userB = $momeyB;
if( $moneyA < 500 )
{
return false;
}
$sqlA = "update user set money=money-500 where name='userA'";   //步骤A
$resultA = $db->query($sqlA);
if( $resultA )
{
$sqlB = "update user set money=money+500 where name='userB'";	//步骤B
$resultB = $db->query($sqlB);
if( $resultB )
{
	return true;
}else
{
$sqlA = "update user set money=money+500 where name='userA'";	//步骤C
$resultA = $db->query($sqlA);
return false;
}
}
$sqlA = "update user set money=money+500 where name='userA'";	//步骤D
$resultA = $db->query($sqlA);
return false;
?>

从事务的角度看:

1、在转账过程中,出现有误,则该错误对双方而言,是没有影响的。即不可能因为某个错误,导致用户A白白减少500,而用户B莫名其妙多了500

2、在转账过程中,用户A是不可能看到自己的卡余额减下500,而用户B也是无法看到自己增加500元,因为转账操作还未结束。

3、单单从这个过程,用户A与用户B的总金额是不变的。只不过是一方减少,另一方增加

总结下事务的几个特性

a、 原子性:一组操作,要么都成功执行,要么都不执行

b、 隔离性:在所有的操作没有执行完毕之前,其它会话不能够看到中间改变的过程

c、 一致性:事务发生前和发生后,数据的总额依然匹配

d、 持久性:事务产生的影响不能够撤销

The quieter you become,the more you are able to hear!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-10 07:12:15

小贝_mysql 存储引擎及事务概念的相关文章

mysql数据库之 存储引擎、事务、视图、触发器、存储过程、函数、流程控制

目录 一.存储引擎 1.什么是存储引擎? 2.mysql支持的存储引擎 3. 使用存储引擎 二.事务 三.视图 1.什么是视图 2.为什么要用视图 3.如何用视图 四.触发器 为何要用触发器 创建触发器语法 五.存储过程 六.函数 七.流程控制 八.数据库备份(运维方向) 一.存储引擎 1.什么是存储引擎? mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处理表格用exce

小贝_mysql 常见存储引擎区别

存储引擎区别 简要: 1.存储引擎 2.myisam与innodb区别 一.存储引擎 1.什么是存储引擎 通俗地讲就是存储和管理数据的方式 形象例子: 某处地方的自行车管理员:李某,张某.每天都有很多人来存取自行车.李某的管理方式是: 车主自行存放,李某也不记录对方存的是什么车.取车时则要交管理费.也不检查取的是否是对方自己的车.相反,张某,则在车主存放车时,记录存放人的特征以及对应车的信息.当人来取车时,张某还要小心核对,人与车的特征是否对应. 从上述例子可知: a.从效率的角度来看: 李某比

mysql存储引擎,并发控制,事务

存储引擎是表级别的概念,每创建一张表都应该指明它的存储引擎,对同一个数据库而言,不建议交叉使用同一个存储引擎. InnoDB:增强版是xtraDB,mariadb默认使用xtraDB     处理大量的短期事务:     数据存储于"表空间(table space)"中:     (1) 所有InnoDB表的数据和索引放置于同一个表空间中:         表空间文件:datadir定义的目录下         数据文件:ibddata1, ibddata2, ...     (2) 

MySQL密码管理、存储引擎及事务

MYSQL密码管理: 修改用户密码: (1) SET PASSWORD [FOR 'user'@'host'] = PASSWORD('cleartext password'); (2) UPDATE mysql.user SET Password=PASSWORD('cleartext password')  WHERE User='USERNAME' AND Host='HOST'; (3) mysqladmin -uUSERNAME -hHOST -p  password 'NEW_PAS

25_存储引擎与事务概述

数据库对同样的数据,有着不同的存储方式和管理方式, 在mysql中,称为存储引擎. 对于用户来说,同一张表的数据,无论用什么引擎来存储,用户的数据是一样的, 但是对于服务器来说,有区别. 常用的表的引擎: myisam 批量插入速度快,不支持事务,锁表 innodb 批量插入相对较慢,支持事务,锁行 ------------------------ 事务:通俗的说事务,就是指一组操作,要么都成功执行,要么都不执行. 关于事务的引擎,选用innodb 事务的ACID特性: 1.原子性(Atomic

什么是数据库的事务?MySql中哪些存储引擎支持事务?

什么是事务? 事务由一个或多个sql语句组成一个整体,如果所有的语句执行成功那么修改将会全部生效,如一条sql语句将销量+1,下一条再+1,倘若第二条失败,那么销量将撤销第一条sql语句的+1操作,只有在该事务中所有的语句都执行成功才会将修改加入到数据库中. 事务的特性 事务具体四大特性,也就是经常说的ACID 1. 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. 

小贝_mysql表优化

mysql表优化 简要:        一.分析表 二.检查表 三.优化表 四.表数据导入 五.锁表操作 一.分析表 1.1.命令: ANALYZE [NO_WRITE_TO_BINLOG | LOCAL]TABLE tbl_name [, tbl_name] ... 1.2.作用: 本语句用于分析和存储表的keyword分布.分析的结果将可以使得系统得到准确的统计信息,使得sql可以生成正确的行计划 1.3.不足: 在分析期间,会对表进行读锁操作 1.4.样例: 二.检查表 2.1.命令 CH

小贝_mysql sql语句优化过程

sql语句优化 一.SQL优化的一般步骤 (1).通过show status命令了解各种SQL的执行频率. (2).定位执行效率较低的SQL语句-(重点select) (3).通过explain分析低效率的SQL语句的执行情况 (4).确定问题并采取相应的优化措施 (1) 通过showstatus命令了解各种SQL的执行频率 MySQL客户端连接成功后,通过使用show[session|global] status 命令可以提供服务器状态信息.其中的session来表示当前的连接的统计结果,gl

小贝_mysql索引学习与优化

mysql索引与优化 简要: 一.索引是什么 二.索引类型及使用语法 三.全文索引说明 一.索引是什么 1.以书的目录为例,通过查看目录,再找到对应的内容.因此,索引就是给数据加上了'目录',便于快速找到数据 2.索引的作用: 好处: 加快了查询速度 坏处: a.降低了增删改的速度 b.增大了表的文件大小(索引文件甚至可能比数据文件还大) 案例: 设有某个表15列,存在10列上有索引,共500w行数据,如何快速导入? 答: 1.把空表的索引全部删除 2.导入数据 3.数据导入完毕后再建立索引 3