正文

作为后端开发,日常操作数据库最常用的是写操作和读操作。读操作我们下边会讲,这个分类里我们主要来看看写操作时为什么会导致 SQL 变慢。

刷脏页

脏页的定义是这样的:内存数据页和磁盘数据页不一致时,那么称这个内存数据页为脏页。

那为什么会出现脏页,刷脏页又怎么会导致 SQL 变慢呢?那就需要我们来看看写操作时的流程是什么样的。

对于一条写操作的 SQL 来说,执行的过程中涉及到写日志,内存及同步磁盘这几种情况。

这里要提到一个日志文件,那就是 redo log,位于存储引擎层,用来存储物理日志。在写操作的时候,存储引擎(这里讨论的是 Innodb)会将记录写入到 redo log 中,并更新缓存,这样更新操作就算完成了。后续操作存储引擎会在适当的时候把操作记录同步到磁盘里。

看到这里你可能会有个疑问,redo log 不是日志文件吗,日志文件就存储在磁盘上,那写的时候岂不很慢吗?

其实,写redo log 的过程是顺序写磁盘的,磁盘顺序写减少了寻道等时间,速度比随机写要快很多( 类似Kafka存储原理),因此写 redo log 速度是很快的。

好了,让我们回到开始时候的问题,为什么会出现脏页,并且脏页为什么会使 SQL 变慢。你想想,redo log 大小是一定的,且是循环写入的。在高并发场景下,redo log 很快被写满了,但是数据来不及同步到磁盘里,这时候就会产生脏页,并且还会阻塞后续的写入操作。SQL 执行自然会变慢。

写操作时 SQL 慢的另一种情况是可能遇到了锁,这个很容易理解。举个例子,你和别人合租了一间屋子,只有一个卫生间,你们俩同时都想去,但对方比你早了一丢丢。那么此时你只能等对方出来后才能进去。

对应到 Mysql 中,当某一条 SQL

mysql图形化界面创建数据库,看完直接跪服相关推荐

  1. 【linux中安装mysql以及使用mysql图形化界面访问数据库】

    Mysql的下载和安装 1.创建mysql目录 在用户文件夹下创建mysql文件夹 [root@localhost zdk]# cd /usr/ [root@localhost usr]# mkdir ...

  2. 十款优秀的MySQL图形化界面

    绝大多数的关系数据库都明显不同于MS Access,它们都有两个截然不同的部分:后端作为数据仓库,前端作为用于数据组件通信的用户界面.这种设计非常巧妙,它并行处理两层编程模型,将数据层从用户界面中分离 ...

  3. 基于图形化界面创建Vue项目

    记录:267 场景:基于图形化界面创建Vue项目,便于后续查阅. 环境:Node.js v14.17.3 1.打开cmd控制台 运行命令:vue ui 截图: 2.项目仪表盘 截图: 3.Vue 项目 ...

  4. 大牛手把手教你!2021中级Java开发面试解答,看完直接跪服

    前言 说真的,在 Java 使用最多的集合类中,List 绝对占有一席之地的,它和 Map 一样适用于很多场景,非常方便我们的日常开发,毕竟存储一个列表的需求随处可见.尽管如此,还是有很多同学没有弄明 ...

  5. 数据库课程设计 python+mysql+图形化界面

    进行操作的表 增加界面 import tkinter as tk import pymysqldef frame():global rootroot = tk.Tk()root.title('录入窗口 ...

  6. PLSQL Developer图形化窗口创建数据库全过程

    1.用系统管理员登陆,我这里用户名是system,密码是manager 2.首先建立表空间(tablespaces),点击file->new->sql window    create t ...

  7. java图形化编程软件,看完跪了

    正文 我的第一份工作是在一家外企,当时抱着"逃离"上海的想法去了二线城市的分公司,但是管理文化氛围跟总部几乎都是一样的,这份工作经历对我后面的工作不论是做事风格.习惯上还是思考问题 ...

  8. ubuntu图形化界面创建文件

    点击鼠标右键,弹出的菜单中没有"新建文档-文本文件"选项 1.进入模板文件夹 2.鼠标右键选择在终端打开 3.输入语句gedit file 4.此时模板出现了一个新文件 右键也出现 ...

  9. Java校招面试经验汇总,看完直接跪服

    美团技术一面20分钟 晚7点,因为想到下周一才面试,我刚准备出去打个羽毛球,北京的电话就来了.面试官各种抱歉,说开会拖延了. 1.自我介绍 说了很多遍了,很流畅捡重点介绍完. 2.问我数据结构算法好不 ...

最新文章

  1. android 编译 oserror,Android-4.4.2 编译出错 OSError: [Errno 2] No such file or directory
  2. 信息管理代码分析二读取二进制文件数据
  3. 最好用的 IntelliJ 插件 Top 10
  4. SpringBoot同时集成Redis和Guava作为缓存组件--进一步分析代码
  5. css中使用id和class 的不同
  6. Django 多数据库联用(看着不错还有源码可以下载)
  7. SAP Hybris Commerce product读取的调试截图
  8. Kerberos:cannot get master principle
  9. 里面怎么打中文字_“标题党”英语应该怎么翻译?不要翻译成“title party”!...
  10. phpcmsV9框架:安装教程
  11. 【TensorFlow】MNIST手写数字识别
  12. 谷歌披露利用 Windows 和安卓双平台的高阶攻击活动
  13. 警惕!这个 PowerPoint“弱点”可用于发动鼠标悬停攻击
  14. socket和URLConnection
  15. Fail to convert to internal representation
  16. 28.XAPP1052驱动详解-WinDriver DMA读写流程
  17. 虚拟机VirtualBox中Ubuntu和windows共享文件夹访问权限问题
  18. oracle alter user identified,11g 使用 alter user identified by values password 恢复历史密码
  19. 【Python】MySQLdb库的使用以及格式化输出字段中的值
  20. linux文件管理命令ppt,linux命令以及文件管理.ppt

热门文章

  1. 第一章《导数及其应用》第1.4节《生活中的优化问题举例》教学案例
  2. windows10,实现远程桌面,更换远程桌面端口号
  3. React单元测试策略及落地
  4. 勒索病毒频发下如何防勒索病毒
  5. greenplum数据库安装
  6. Oracle Spacial(空间数据库)使用注意事项
  7. POE、UPS技术的简单理解
  8. linux安装什么桌面好,24款Linux桌面,有没有你的最爱?
  9. java检测服务器之间网络状况及丢包率
  10. OpenCV cv::TermCriteria 模板类