mysql的事务隔离级别

https://www.cnblogs.com/hello-shf/p/10702316.html

mysql几种引擎的区别?

1.常用的3种

2.InnoDB Myisam Memory

3.InnoDB跟Myisam的默认索引是B+tree,Memory的默认索引是hash

区别:

1.InnoDB支持事务,支持外键,支持行锁,写入数据时操作快,MySQL5.6版本以上才支持全文索引

2.Myisam不支持事务。不支持外键,支持表锁,支持全文索引,读取数据快

3.Memory所有的数据都保留在内存中,不需要进行磁盘的IO所以读取的速度很快, 、

但是一旦关机的话表的结构会保留但是数据就会丢失,表支持Hash索引,因此查找速度很快

三、MySQL中常用的几种存储引擎:

MyISAM存储引擎:

存放的位置: MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI,默认存放位置是C:\Documentsand Settings\All Users\Application Data\MySQL\MySQL Server 5.1\data

存放的方式: MyISAM 这种存储引擎不支持事务,不支持行级锁,只支持并发插入的表锁,主要用于高负载的select。

索引的方式: MyISAM也是使用B+tree索引但是和Innodb的在具体实现上有些不同。

该引擎基于ISAM数据库引擎,除了提供ISAM里所没有的索引和字段管理等大量功能,MyISAM还使用一种表格锁定的机制来优化多个并发的读写操作,但是需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间,否则碎片也会随之增加,最终影响数据访问性能。MyISAM还有一些有用的扩展,例如用来修复数据库文件的MyISAMChk工具和用来恢复浪费空间的 MyISAMPack工具。MyISAM强调了快速读取操作,主要用于高负载的select,这可能也是MySQL深受Web开发的主要原因:在Web开发中进行的大量数据操作都是读取操作,所以大多数虚拟主机提供商和Internet平台提供商(Internet Presence Provider,IPP)只允许使用MyISAM格式。

MyISAM类型的表支持三种不同的存储结构:静态型、动态型、压缩型。

静态型:指定义的表列的大小是固定(即不含有:xblob、xtext、varchar等长度可变的数据类型),这样MySQL就会自动使用静态MyISAM格式。使用静态格式的表的性能比较高,因为在维护和访问以预定格式存储数据时需要的开销很低;但这种高性能是以空间为代价换来的,因为在定义的时候是固定的,所以不管列中的值有多大,都会以最大值为准,占据了整个空间。

动态型:如果列(即使只有一列)定义为动态的(xblob,

xtext,

varchar等数据类型),这时MyISAM就自动使用动态型,虽然动态型的表占用了比静态型表较少的空间,但带来了性能的降低,因为如果某个字段的内容发生改变则其位置很可能需要移动,这样就会导致碎片的产生,随着数据变化的增多,碎片也随之增加,数据访问性能会随之降低。

对于因碎片增加而降低数据访问性这个问题,有两种解决办法:

a、尽可能使用静态数据类型;

b、经常使用optimize table table_name语句整理表的碎片,恢复由于表数据的更新和删除导致的空间丢失。如果存储引擎不支持 optimize table table_name则可以转储并 重新加载数据,这样也可以减少碎片;

压缩型:如果在数据库中创建在整个生命周期内只读的表,则应该使用MyISAM的压缩型表来减少空间的占用。

优缺点:MyISAM的优势在于占用空间小,处理速度快。缺点是不支持事务的完整性和并发性。

2.innoDB存储引擎

存储位置:MySQL如果使用InnoDB存储引擎,数据库文件类型就包括.frm、ibdata1、.ibd,存放位置有两个,.frm文件默认存放位置是C:\Documents

and Settings\All Users\ApplicationData\MySQL\MySQL Server

5.1\data,ibdata1、.ibd文件默认存放位置是MySQL安装目录下的data文件夹。

innodb存储引擎的mysql表提供了事务,回滚以及系统崩溃修复能力和多版本迸发控制的事务的安全。

innodb支持自增长列(auto_increment),自增长列的值不能为空,如果在使用的时候为空的话怎会进行自动存现有的值开始增值,如果有但是比现在的还大,则就保存这个值。

innodb存储引擎支持外键(foreign key) ,外键所在的表称为子表而所依赖的表称为父表。

innodb存储引擎最重要的是支持事务,以及事务相关联功能。

innodb存储引擎支持mvcc的行级锁。

innodb存储引擎索引使用的是B+Tree

优缺点:InnoDB的优势在于提供了良好的事务处理、崩溃修复能力和并发控制。缺点是读写效率较差,占用的数据空间相对较大。

3.MEMORY存储引擎

memory存储引擎相比前面的一些存储引擎,有点不一样,其使用存储在内从中的数据来创建表,而且所有的数据也都存储在内存中。

每个基于memory存储引擎的表实际对应一个磁盘文件,该文件的文件名和表名是相同的,类型为.frm。该文件只存储表的结构,而其数据文件,都是存储在内存中,这样有利于对数据的快速处理,提高整个表的处理能力。

memory存储引擎默认使用哈希(HASH)索引,其速度比使用B-+Tree型要快,如果读者希望使用B树型,则在创建的时候可以引用。

memory存储引擎文件数据都存储在内存中,如果mysqld进程发生异常,重启或关闭机器这些数据都会消失。所以memory存储引擎中的表的生命周期很短,一般只使用一次。

4.ARCHIVE存储引擎

该存储引擎非常适合存储大量独立的、作为历史记录的数据。区别于InnoDB和MyISAM这两种引擎,ARCHIVE提供了压缩功能,拥有高效的插入速度,但是这种引擎不支持索引,所以查询性能较差一些。

四.四种存储引擎比较

InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archiv

注意,同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

银行mysql面试题_mysql的常见面试题相关推荐

  1. mysql数据库的笔试题_MySQL数据库常见面试题

    SQL基础 1.MySQL的数据类型 2.MySQL的SQL语句分类 DDL(Data Definition Language)语句:数据定义语言,这些语句定义了不同的数据段.表.列.索引等数据库对象 ...

  2. 【面试题】Java常见面试题集锦

    Java常见面试题集锦 面试题模块 这份面试题,包含的内容了十九了模块:Java 基础.容器.多线程.反射.对象拷贝.Java Web 模块.异常.网络.设计模式.Spring/Spring MVC. ...

  3. java面试题:Redis常见面试题(实际面试有被问到)

    目录 1.Redis和Memcached相比,有哪些优势? 2.Redis为什么要把数据放到内存中? 3.Redis 为何这么快? 4.为何使用单线程? 5.缓存三大问题以及解决方案? 缓存穿透:查询 ...

  4. 测试面试题集-Dubbo常见面试题

    VOL 175 13 2020-11 今天距2021年48天 这是ITester软件测试小栈第175次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 0 ...

  5. 【面试题】计算机网络常见面试题

    文章目录 TCP的三次握手.四次挥手? 为什么要三次握手?两次行吗? 第 2 次握手传回了 ACK,为什么还要传回 SYN? 四次挥手 三次握手过程中可以携带数据吗? 三次握手连接阶段,最后一次ACK ...

  6. java常见手写sql面试题_java sql常见面试题

    为管理学员培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号.学员姓名.所属单位.学员年龄 C (C#,CN ) C#,CN 分别代表课程编号.课程名称 SC ...

  7. MySQL数据库常见面试题总结

    1.数据库的常用范式: 第一范式(1NF):指表的列不可再分,数据库中表的每一列都是不可分割的基本数据项,同一列中不能有多个值: 第二范式(2NF):在 1NF 的基础上,还包含两部分的内容:一是表必 ...

  8. 分享 Python 常见面试题及答案(下)

    程序IT圈 www.cxyquan.com 优秀程序猿技术公众号 之前分享了一篇很全的Java的面试题 分享 Java 常见面试题及答案(上) 分享 Java 常见面试题及答案(下) 由于篇幅过长,这 ...

  9. ElasticSearch搜索引擎常见面试题总结

    一.ElasticSearch基础: 1.什么是Elasticsearch: Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎,每个字段都被索引并可被搜索 ...

  10. RabbitMQ消息队列常见面试题总结

    1.什么是消息队列: 1.1.消息队列的优点: (1)解耦:将系统按照不同的业务功能拆分出来,消息生产者只管把消息发布到 MQ 中而不用管谁来取,消息消费者只管从 MQ 中取消息而不管是谁发布的.消息 ...

最新文章

  1. Java中/r和/n的区别
  2. mysql 中 replace into 与 insert into on duplicate key update 的使用和不同点
  3. c# 字典按ascii 排序_sort命令-将文件进行排序并输出
  4. brew改源无效问题之一
  5. linux rm命令
  6. (Head First 设计模式)学习笔记(1)
  7. 洛谷1090 合并果子
  8. 手把手教你写Linux I2C设备驱动
  9. leetcode83 删除排序链表中的重复元素
  10. 通过SOAPHeader增强WebService的安全性
  11. git 删除已经 add 的文件
  12. 使用DAO模式实现电子宠物数据更新
  13. 视频压缩神器--小丸工具箱--小丸工具箱入门操作教程
  14. Android获取安装应用Apk包大小 缓存大小 getPackageSizeInfo StorageManager
  15. php 语言开发,PHP语言开发常用工具
  16. 搭建虚拟局域网云服务器,搭建虚拟局域网云服务器
  17. Adobe Photoshop CC2014 安装过程
  18. 计算机搜索不到PDF,PDF能打印吗,pdf虚拟打印机找不到
  19. 最最最简单从官方获取最新行政区划代码、区划拼音
  20. Project与office 365冲突问题

热门文章

  1. 聊天记录没了怎么办?苹果手机微信聊天记录怎么恢复
  2. 数据库 实验二 数据库的单表查询和连接查询
  3. fiddler连接手机
  4. el-amap的使用
  5. iphone通过iTunes12.7怎么设置铃声
  6. 事件的三个阶段:捕获阶段 目标阶段 冒泡阶段及防止冒泡和捕获
  7. windows 2003 directx 3D加速 开启
  8. 解决:使用@符号,报错:找不到模块“@”或其响应的类型声明。
  9. MYSQL简单题目和知识点
  10. python matplotlib pColor 网格线 消除