MySQL数据库中有一个不太常用但便于进行某些调试的函数:sleep(),今天我们就来介绍一下这个函数的用法。

首先,看看官网对于函数的定义:

SLEEP(duration)
Sleeps (pauses) for the number of seconds given by the duration argument, then returns 0. The duration may have a fractional part. If the argument is NULL or negative, SLEEP() produces a warning, or an error in strict SQL mode.

可以看到,这个函数的作用就是休眠,参数是休眠的时长,以秒为单位,也可以是小数。

看一下这个函数的执行效果:

可以看到,语句的执行时间为1秒。

我们可以利用这样的效果,来仔细观察一些SQL语句的执行情况,比如死锁,因为不加上sleep这个函数,很多SQL语句很快就执行结束,这样就难以复现过程中的细节,关于死锁的模拟,在后面会有例子可供参考。

sleep函数可以放在select子句中,让每行记录都休眠指定的时间,如下图所示,sleep的参数是10秒,数据库表中一共有两条记录,整个语句执行的时间为20秒。

在上面SQL执行期间,使用命令show processlist看看有哪些线程在运行,从下图可以看出上面的SQL语句正在执行。

如果没有满足条件的记录,则sleep函数也不会生效,SQL语句不会休眠,如下图:

SQL语句的执行时间为0秒。

下面,我们利用sleep函数来模拟死锁的现象。

先创建表:

CREATE TABLE `orders` (
`order_id` int(11) NOT NULL,
`order_addr` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后打开两个session,可以使用mysql客户端打开两个窗口,先执行下面的SQL语句:

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
insert into orders(order_id,order_addr)
select '',sleep(10) from dual where not exists
(select order_id from orders where order_id='');

再执行下面的SQL语句:

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
insert into orders(order_id,order_addr)
select '',234 from dual where not exists
(select order_id from orders where order_id='');

我们会发现,第二个SQL语句可以正常执行,但第一个SQL语句出现了死锁:

[Err] 1213 - Deadlock found when trying to get lock; try restarting transaction

总结:sleep函数让sql语句暂停执行指定的时间,这样可以模拟或者观察sql语句执行过程中的细节,方便进行调试、纠错,希望本文有帮助。

https://blog.csdn.net/weixin_44742132/article/details/89674482

Linux下的换行符\n\r以及txt和word文档的使用的更多相关文章

  1. linux下与windows下的换行符

    [原文有些许错误,已作了修改] 回车符号和换行符号产生背景 关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传 ...

  2. windows python文件拷贝到linux上执行问题-换行符问题/r/n

    之前在Windows下写好了一个Python脚本,运行没问题,今天在Linux下,脚本开头的注释行已经指明了解释器的路径,也用chmod给了执行权限,但就是不能直接运行脚本. 1 问题1: 报错:: ...

  3. 解决不同操作系统下git换行符一致性问题

    一.不同操系统下的换行符CR回车 LF换行Windows/Dos CRLF \r\nLinux/Unix LF \nMacOS CR \r二.解决方法 打卡git bash,设置core.autocr ...

  4. PHP在linux读取word文档

    几天帮朋友解决一个技术问题,在Linux下,将word文档中的内容读取,然后使用正则匹配,拼成sql入库 查阅了外文资料和google之后,步骤如下: #wget http://www.winfiel ...

  5. [转载]linux上用PHP读取WORD文档

    在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档. 再使用php执行系统命令调用而已. 具体操作如下: 1.安装antiword 官方站:htt ...

  6. 使用Python3将word文档和pdf电子书进行格式互转(兼容Windows/Linux)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_96 一些重要文档格式之间的互转在目前显得尤为重要,pdf作为通用格式在现在各个平台上兼容性是最好的,所以写python脚本将这些w ...

  7. ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档

    ORACLE LINUX 6.3 + ORACLE 11.2.0.3 RAC + VBOX安装文档 2015-10-21 12:51 525人阅读 评论(0) 收藏 举报  分类: Oracle RA ...

  8. 在linux中使用php将word文档转为pdf

    使用本教程需要在linux中安装openoffice,改页面中有详细的安装与使用教程(http://www.cnblogs.com/sustudy/p/3999628.html). 既然,你看了该教程 ...

  9. C#操作Word文档(加密、解密、对应书签插入分页符)

    原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己 ...

随机推荐

  1. day22 os模块

    # 主要用于和当前操作系统做对接的时候获取系统参数用的 import os # os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 # os.chdir("dir ...

  2. 【BZOJ4000】【LOJ2104】【TJOI2015】棋盘 (状压dp + 矩阵快速幂)

    Description ​ 有一个\(~n~\)行\(~m~\)列的棋盘,棋盘上可以放很多棋子,每个棋子的攻击范围有\(~3~\)行\(~p~\)列.用一个\(~3 \times p~\)的矩阵给出了 ...

  3. 04 Zabbix核心概念回顾

    04 Zabbix核心概念回顾 1. 监控四大核心功能: 数据采集----数据储存----数据展示和数据分析-----告警    1.1. 数据采集方式: SNMP:被监控设备上面必须启用SNMP a ...

  4. 学习Spring Boot:(二十二)使用 AOP

    前言 AOP 1,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.基于AOP实现的功能不会破坏原来程序逻辑,因此它可以很好的对业务逻辑的各个部分进行隔离,从而使得业 ...

  5. cf786E ALT (最小割+倍增优化建图)

    如果把“我全都要”看作是我全不要的话,就可以用最小割解决啦 源点S,汇点T 我们试图让每个市民作为一个等待被割断的路径 把狗狗给市民:建边(S,i,1),其中i是市民 把狗狗给守卫:建边(j,T,1) ...

  6. 前端学习 -- Html&Css -- 表单

    表单的作用就是用来将用户信息提交给服务器的,比如:百度的搜索框 注册 登录这些操作都需要填写表单. 使用form标签创建一个表单,form标签中必须指定一个action属性,该属性指向的是一个服务器的 ...

  7. Eclipse导入jdk的源码

    eclipse导入JDK源码 前言:这件事情的重要性不言而喻,对于学习和观摩优秀的代码非常的有用,我喜欢想看什么代码都能 Ctrl+鼠标一点 就能够看到,不过这个不常操作,在这里小记一笔,以备后用.( ...

  8. Java逐行写入字符串到文件

    下边是写东西到一个文件中的Java代码.运行后每一次,一个新的文件被创建,并且之前一个也将会被新的文件替代.这和给文件追加内容是不同的. 1. public static void writeFile ...

  9. gcc-linaro-arm-linux-gnueabihf交叉编译器配置

    系统Ubuntu14.04 版本:gcc 版本 4.7.3 20130328 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.04-20130415 ...

  10. Codeforces Round #510 (Div. 2)(C)

    传送门:Problem C https://www.cnblogs.com/violet-acmer/p/9682082.html 题意: 给你n个数,定义有两种操作 ① 1 i j : (i != ...