Mysql数据库的几个特点

  • 0.存储引擎MyISAM和InnoDB区别
    • MyISAM
    • InnoDb
  • 1. 事物的隔离级别
    • 读未提交 Read uncommitted
    • 读提交 Read committed
    • 可重复读 Repeatable read
    • 串行化 serializable
      • 可能出现的问题
        • 脏读
        • 不可重复读
        • 幻读
  • 2.聚集索引和非聚集索引
    • 聚集索引
    • 非聚集索引
  • 3.回表
  • 4.explain执行计划

导读:0.存储引擎MyISAM和InnoDB区别 1.事物级别 2.聚集索引和非聚集索引 3.回表 4.explain执行计划

0.存储引擎MyISAM和InnoDB区别

MyISAM

  • 不支持事务,所以每次查询都是原子的;
  • 支持表级锁,即每次操作是对整个表加锁;
  • 存储表的总行数;
  • 一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;
  • 采用非聚集索引(Non-clustered),索引文件的数据域存储指向数据文件的指针。

InnoDb

  • 支持ACID的事务;
  • 支持行级锁及外键约束;
  • 不存储总行数;
  • 一个InnoDb引擎存储在一个文件空间(共享表空间,表大小不受操作系统控制,一个表可能分布在多个文件里),也有可能为多个,受操作系统文件大小的限制;
  • 主键索引采用聚集索引(索引的数据域存储数据文件本身),辅索引的数据域存储主键的值;因此从辅索引查找数据,需要先通过辅索引找到主键值,再访问辅索引;
  • 使用自增主键,防止插入数据时,为维持B+树结构,文件的大调整。

1. 事物的隔离级别

查询隔离级别:SHOW VARIABLES LIKE 'transaction_isolation%';

读未提交 Read uncommitted

解释:一个事务可以读取到其他事务尚未提交的数据,也就是脏数据。

可能出现的问题:脏读不可重复读幻读

读提交 Read committed

解释:事务A只能读取到已经提交的数据,也就是其他事务B已经提交的数据。当其他事务B正在修改某个数据时,读提交的事务A会被阻塞,直到该数据被事务B提交为止。

解决:脏读,可能出现的问题:不可重复读幻读

Sql Server,Oracle的默认隔离级别是Read committed

可重复读 Repeatable read

解释:是指在一个事务A中多次读取同一数据时,每次读取的结果都是一样的。这是因为在可重复读的隔离级别下,一个事务A读取的数据会被锁定,直到事务A提交或回滚,其他事务B才会对其进行修改。

解决:脏读不可重复读,可能出现的问题:幻读

MySQL的默认隔离级别就是Repeatable read

串行化 serializable

解释:所有事务都必须按照串行的方式执行,也就是说,每个事务必须等待前一个事务完成后才能执行。

解决:脏读不可重复读幻读

可能出现的问题

脏读

事务可以读取到其他事务尚未提交的数据,也就是脏数据

不可重复读

在一个事务中,同一个查询语句执行两次或多次,但是返回的结果不同。这是由于在事务执行期间,另一个事务修改了查询结果中的某些数据(指update已存在的数据)

幻读

在一个事务中,同一个查询语句执行两次或多次,但是返回的结果不同。这是由于在事务执行期间,另一个事务插入或删除了查询结果中的某些数据。(指insert新的数据或delete数据)

2.聚集索引和非聚集索引

聚集索引

  • 一个表只能有一个
  • 存储记录是物理上连续存在
  • 叶子节点就是数据节点,存储的数据本身

非聚集索引

  • 一个表存在多个:普通索引,唯一索引,全文索引
  • 存储记录是逻辑上的连续,物理存储并不连续
  • 叶子节点是数据的聚集索引的key,一个指针指向对应的数据块

3.回表

通过非聚集索引查找的过程是先找到该索引key对应的聚集索引的key,然后再拿聚集索引的key到主键索引树上查找对应的数据

4.explain执行计划

详情见:Mysql-执行计划explain解释、explain各字段意思、执行计划explain输出列说明

Mysql数据库的几个特点相关推荐

  1. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  2. MySQL数据库+命令大全+常用操作

    格式:mysql -h主机地址 -u用户名 -p用户密码 1. 例:连接到本机上的MYSQL 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示 ...

  3. mysql数据库是一个软件呐_15款好用的mysql管理软件

    1. Induction Induction是一款用于理解数据关系的开源管理工具,它可用来探索行/列,运行查询和数据可视化等方面.该工具支持多种数据库,包括PostgreSQL,MySQL,SQLit ...

  4. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  5. C语言对mysql数据库的操作

    C语言对mysql数据库的操作 原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎 ...

  6. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  7. python用django连接mysql_三分钟了解Django如何连接Mysql数据库

    处理用户注册请求.Django连接MysqL数据库相关配置.数据库迁移命令: my_Dproject/app01/views.py    在views函数文件中添加register函数,来处理用户注册 ...

  8. mysql数据库比对视频教程_MySQL数据库全学习实战视频教程(27讲 )

    一)mySQL数据库简介:MySQL属于关系型数据库,是当前最流行的关系型数据库管理系统之一,在WEB项目使用方面,MySQL是最好的 RDBMS应用软件. 二)本mySQL数据库视频教程目录如下:  ...

  9. eclipse关闭mysql数据库,有关于用eclipse连接mysql数据库出现的问题以及解决办法

    写帖子是为了让更多的程序员减少再调试bug中的时间,也希望大家能一起把自己遇到的错误及解决方法写出来.我是一个刚开始学java的大二学生,用的是<java开发实战经典>.在写p646的程序 ...

  10. bd2和mysql语法区别,经验:在MySQL数据库中,这4种方式可以避免重复的插入数据!...

    最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下 ...

最新文章

  1. 模板方法模式小记【原创】
  2. java 区间树_线段树(区间树)之区间染色和4n推导过程
  3. 亚洲综合竞争力排名发布:韩国位居第1,中国第9,大家怎么看?
  4. 第十八期:专家认为对“人工智能+教育”应持审慎态度
  5. 下拉选择_在管理Excel中实现联动下拉选择
  6. 微软面试题1、把二元查找树转变成排序的双向链表
  7. bzoj3944 Sum 杜教筛
  8. python函数做n_【python】定义函数、参数、递归(n!)
  9. python开发飞船游戏
  10. rendering omni shadow in one pass.
  11. Spring(二十二):Spring 事务
  12. 计算机代码大全喜欢你,2020微信表白代码大全
  13. 【Git】解决Untracked Files Prevent Checkout的问题
  14. 群联2251-07 海力士TLC-16K 颗粒 U盘重新量产记录
  15. 苹果手机开热点电脑/安卓手机无法链接?
  16. 前端项目实战145-React.Fragment
  17. 软件测试才是系统级别错误,软件测试部BUG级别定义
  18. 【社会网络分析_04】ucinet中心度密度测量与凝聚子群发现
  19. 直流无刷电机霍尔传感器2种安装方式
  20. PHP微信公众平台自定义菜单

热门文章

  1. 基于Beacon的室内定位系统简介
  2. VPX显示计算机学习资料第711篇:飞腾1500A-4+8860 6UVPX显示计算机
  3. 人体体表红外测温仪方案PCBA设计
  4. 强化学习论文阅读笔记(一)——强化学习研究综述_高阳
  5. Neutron的VLAN实现模型
  6. word无法切换中文输入法的解决方法
  7. 随心所欲版xp阴道镜_鼠年兽三小只出道!《魔域口袋版》x三只松鼠联动开启
  8. 小苏的Shell编程笔记之一
  9. 批量删除并更改yolo格式的标签类别
  10. 通过XAMPP访问phpmyadmin管理mysql数据库