本篇文章介绍了MySQL中普通索引和唯一索引的区别,讲解很详细,希望对学习MySQL的朋友有帮助!

需要注意的是:

redo log中的数据,可能还没有 flush 到磁盘,磁盘中的 Page 1 和 Page 2 中并没有最新数据,但我们依然可以拿到最新数据(内存中的 Page 1 就是最新的,Page 2 虽然不是最新的,但是从磁盘读到内存中后,执行了merge操作,内存中的 Page 2 就是最新的了。)

如果此时 MySQL 异常宕机了,比如服务器异常掉电,change buffer 中的数据会不会丢?

change buffer 中的数据分为两部分,一部分是已经merge到ibdata1中的数据,这部分数据已经持久化,不会丢失。另一部分数据,还在 change buffer 中,没有merge 到ibdata1,分 3 种情况:

(1)change buffer 写入数据到内存,redo log 也已经写入(ib-log-filex),但是未 commit,binlog中也没有fsync到磁盘,这部分数据会丢失;

(2)change buffer 写入数据到内存,redo log 也已经写入(ib-log-filex),但是未 commit,binlog 已写入到磁盘,这部分不会多丢失,异常重启后会先从 binlog 恢复 redo log,再从 redo log 恢复 change buffer;

(3)change buffer 写入数据到内存,redo log 和 binlog 都已经fsync,直接从redo log 恢复,不会丢失。

redo log 主要节省的是随机写磁盘的 IO 消耗(转成顺序写),而 change buffer 主要节省的则是随机读磁盘的 IO 消耗

更多MySQL相关教程,请关注PHP中文网!

php普通索引和唯一索引,MySQL中普通索引和唯一索引的区别详解相关推荐

  1. mysql中engine=innodb和engine=myisam的区别详解

    最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什 ...

  2. decimal类型对象里面定义什么类型_MySQL中Decimal类型和Float Double的区别(详解)

    MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...

  3. revoke mysql_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解

    MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant selec ...

  4. mysql revoke 授权_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解

    MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant selec ...

  5. python定义数组并赋值_python中的数组赋值与拷贝的区别详解

    具体的注解我已经写在了程序里面:通俗的解释了python里面的浅拷贝与深拷贝的不同,请看程序. # -*- coding: utf-8 -*- import numpy as np import co ...

  6. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

  7. python random randint_python中random.randint和random.randrange的区别详解

    在python中,通过导入random库,就能使用randint 和 randrange 这两个方法来产生随机整数.那这两个方法的区别在于什么地方呢?让我们一起来看看! 区别: randint 产生的 ...

  8. linux中cat、more、less命令区别详解

    linux中cat.more.less命令区别详解 转自:https://blog.csdn.net/xyw_blog/article/details/16861681 众所周知linux中命令cat ...

  9. python中randint是什么意思_python中random.randint和random.randrange的区别详解

    在python中,通过导入random库,就能使用randint 和 randrange 这两个方法来产生随机整数.那这两个方法的区别在于什么地方呢?让我们一起来看看! 区别: randint 产生的 ...

  10. mysql中jdbc的metadata_JDBC元数据操作——DatabaseMetaData接口详解

    在JDBC技术规范中,提供了Connection,Statement,ResultSet这三个开发过程中经常用到的接口.针对与每个接口,JDBC规范提供了相应的接口描述对象,也就是xxxMetaDat ...

最新文章

  1. 末日来临,你的编程语言能干嘛? | 每日趣闻
  2. python timeit class Timer()类 timeit(string, string) repeat(string, string) default_timer() 耗时检测 执行速度
  3. 傅里叶变换处理音频c++_积分变换(1)——傅里叶级数
  4. AES加密算法256位密钥与128位密钥的不同之处
  5. 网关Ocelot功能演示完结,久等了~~~
  6. STL10-deque容器
  7. Python BeautifulSoup和Requests爬虫爬取中关村手机资料
  8. learning rate 学习速率
  9. 分布式数据库中全局唯一主键
  10. flask manage port_nginx+uwsgi+python+flask环境搭建
  11. 11.17 shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符号
  12. 同时安装Python2,Python3如何解决冲突问题【官方解法】
  13. AirBuddy技巧:如何检查Mac电脑是否支持低功耗蓝牙?
  14. ubuntu14上安装ros教程
  15. Java流处理之序列化和打印流
  16. Review-常用数学符号的英文及中文叫法
  17. 驴子圈资讯:携程移动端酒店预订首超PC端
  18. idea中的maven使用
  19. 【大学生软件测试基础】图书阅读指南 - 决策表法
  20. 嵌入式工程师,怎么不被历史洪流冲走?

热门文章

  1. 第二讲 ODE欧拉数值方法
  2. 暑假N天乐【比赛篇】 —— 2019杭电暑期多校训练营(第五场)
  3. codevs 3164 质因数分解
  4. error: declaration of 'cv::Mat R ' shadows a parameter
  5. C语言中的static 详细分析 2014-10-11 15:15 143人阅读 评论(0) 收藏...
  6. Centos 6.4 搭建LANMP一键安装版
  7. 基础知识收藏(ASP.NET的OnClientClick与OnClick事件)-2013.07.10
  8. Python 安装管理器 pythonz
  9. [html] Google map的地理编码javascript例子 -- Google map geocoder example
  10. 矩阵正态分布基础1 外形式、外积与微分形式简介