2020-12-01 21:12发布
(1)大多数情况是正常的,只是偶尔会出现很慢的情况。(2)在数据量不变的情况下,这条SQL语句一直以来都执行的很慢。
1. 数据库在刷新脏页:在往数据库插入或者更新一条数据的时候,我们知道数据库会在内存中把对应的字段更新了,但是更新之后,这些更新的字段并不会马上同步持久化到磁盘中,而是把这些更新的记录写入到redo log日志中去,等到空闲的时候,再通过redo log日志把最新的数据同步到磁盘中去。(备注:当内存数据页跟磁盘数据页内容不一致时,我们成这个内存页为“脏页”,当内存数据刷新到磁盘后,内存和磁盘的数据一致时,就称为“干净页”)刷脏页有以下几种场景(1)redo log 日志写满了:redo log日志里的内容是很有限的,如果数据库一直很忙,更新又很频繁,这个时候redo log很快就被写满了,这个时候就没办法等到空闲的时候再把数据同步到磁盘中去,只能暂停其他操作,全身心的把数据同步到磁盘中,而此时就会导致平时正常的SQL语句突然执行的很慢。(2)内存不够用了:如果一次性查询较多的数据,而且恰好碰到所查询的数据页不在内存中,需要申请内存,而此时恰好内存不足的时候就要淘汰一部分内存数据页,如果是干净页就直接释放,如果恰好是脏页就要刷脏页。(3)MySQL认为系统“空闲”的时候:这时候系统没什么压力。(4)MySQL正常关闭的时候:这时候,MySQL会把内存的脏页都flush到磁盘上,这样下次MySQL启动的时候,就可以直接从磁盘上读取数据,启动速度会很快。2. 拿不到锁: 我们要执行的这条SQL语句涉及到的表刚好别人在用,并且加锁了,我们拿不到锁,只能慢慢等待别人释放锁了。如果要判断是否真的在等待锁,可以使用 show processlist 这个命令来查看当前的状态。
一个 SQL 执行的很慢,我们要分两种情况讨论:
大多数情况下很正常,偶尔很慢,则有如下原因(1). 数据库在刷新脏页,例如 redo log 写满了需要同步到磁盘。(2). 执行的时候,遇到锁,如表锁、行锁。
这条 SQL 语句一直执行的很慢,则有如下原因(1). 没有用上索引:例如该字段没有索引;由于对字段进行运算、函数操作导致无法用索引。(2). 数据库选错了索引。
数据库在刷新脏页,同步数据到磁盘的时候,就有可能导致我们的SQL语句执行的很慢了。
例如 当我们每次往数据库插入一条数据、或者要更新一条数据的时候,这时数据库会在内存中把对应字段的数据更新了,但是它在 更新后并不会马上同步持久化到磁盘中去,而是把这些更新的记录保存到 redo log 中的日记中,等到空闲的时候,才会通过 redo log 里面的日记,把最新的数据同步到磁盘中去, 但是 redo log 里面的容量是有限度的,如果数据库一直都插入或者 更新新的数据,当这种时候 redo log 很快就会被写满了,这时候就没有办法等到空闲的时候再把数据同步到磁盘,所以只能 暂时停止其他操作,来把新的数据同步到磁盘中去的,这个时候,就会导致我们平时正常的SQL语句突然执行的很慢
可能原因:
SQL语句执行影响的行数太多;
SQL语句行的有问题循环了;
电脑慢。
当我们要往数据库插入一条数据、或者要更新一条数据的时候,我们知道数据库会在内存中把对应字段的数据更新了,但是更新之后,这些更新的字段并不会马上同步持久化到磁盘中去,而是把这些更新的记录写入到 redo log 日记中去,等到空闲的时候,在通过 redo log 里的日记把最新的数据同步到磁盘中去。
当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。
系统在刷新脏页的时候,只能暂停其他操作,全身心来把数据同步到磁盘中去的,而这个时候,就会导致我们平时正常的SQL语句突然执行的很慢。
虽然从事开发行业的女生越来越多,但女生的比例还是远比不上男生。软件测试的男女生比例则基本相当,软件测试要求细心、耐心,大部分女生也是比较适合学的。而且软件测试课程分为手工测试和自动化测试,手工测试分为功能测试、性能测试、接口测试。自动化测试...
需要。很多人当初抱着测试不需要懂代码,才选择了这个行业,这个就要看对自己的职业定位了,是止步于月薪过万就可以了,还是往20k、30k去突破,如果这样的话,是肯定要会接口、会自动化,就必然要涉及到代码。如果真的看不懂代码,实际的测试后期的工作会出现...
在我看来游戏开发挺难的,尤其像手游一类的还有网游,里面有很多的程序代码而且伤神又费力,不过也有女生在这方面做的很好的,如果你感兴趣,非常想学,可以试试
软件测试专业现在很火热,很缺少人才,25岁学软件测试能学会,就业薪资也高,工作也相对轻松
测试类型有:功能测试,性能测试,界面测试。功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用...
这个其实和接口测试的场景密不可分的,比如说:外部接口测试: 必须先接口测试通过了,才能执行功能测试子系统或者各个模块之间的联调测试: 必须各子系统后台代码完成,并提供接口才可以完成测试,一般来说都要求各子系统功能测试通过后再进行...
这个是会因为公司的架构不同而不同的,并不是固定的,但是一般是会有专门的测试部门,或者叫质量保证部,也有可能是叫别的名字。
移动端测试,包括App兼容性测dao试,7*24小时稳定性测试,功耗性能测试,UI测试,交互测试等,课程主要学习的内容有:1、功能测试主要包括计算机基础、软件测试核心理论、Linux、数据库,学习目标是掌握软件测试核心理论,结合Linux、数据库等可实现移动端、w...
标题 1. 首先要做一个标题党(此标题党非彼标题党)。标题一定要清晰简洁易理解,不应该臃长 2. 尽量前缀要规范,例如模板: [Product][Version]_[Feature]_[Title],这样描述会很清晰,也方便查找 3. 缺陷的标题一定要描述在什么情况下发生了什么问...
1、 缺陷报告可以记录缺陷2、可以对缺陷进行跟踪管理3、可以对缺陷报告进行分类 总结 统计
1、缺陷编号(Defect ID),提交BUG的顺序。2、缺陷标题(summary),简明扼要的说明一下这个BUG。3、缺陷的发现者(DetectedBy) ,一般是自己。4、发现缺陷的日期(Detected on date),一般是当天。5、缺陷所属的模块(subject), 在测试哪个模块的时候发现的BUG...
缺陷标题好的缺陷标题需要让相关人员一目了然,一般建议的格式是条件+失败。缺陷类型缺陷类型也是根据具体的项目而定的。但一般情况下分为功能、界面、建议。重现步骤重现步骤的编写规则可以参考测试用例中的操作步骤 ,一定要足够详细、说明清楚问题的操作顺...
工具:NoSQLUnitJsTestDriverQTRunnerVenusFluintBuster.JSSQLUnitECUTQTestlibUnitilsgreatestDbUnitAbbotGoogleTest框架:JUnitMoqJSCaptureMockCUnitPyUnitCppUTestCppUnitzCUTcipra
JunitTestNGGoogleTestpytestunittestJmockitJaCoCogcov、lcov、gcovrCoverage.pyEvoSuiteDiffblue Cover
React Hooks测试库( Testing Library)是一个简单而完整的React Hooks测试工具。 React Hooks测试库让用户可以为React钩子创建简单的测试工具,自定义钩子的输入和检索输出,以处理在功能组件体内运行的情况。 使用React Hooks,用户不必为了测试而去担...
1、单元测试注重代码逻辑,接口测试注重业务逻辑;2、单元测试的粒度最小,是测试最小独立的单元模块(不依赖其他模块);接口测试不是,会覆盖很多;3、单元测试是白盒测试,接口测试是黑盒测试;4、单元测试关注的是代码的实现和逻辑,测试范围较小,保证实...
最多设置5个标签!
一条SQL语句执行很慢的可以分两种情况:
(1)大多数情况是正常的,只是偶尔会出现很慢的情况。
(2)在数据量不变的情况下,这条SQL语句一直以来都执行的很慢。
针对情况1的原因:
1. 数据库在刷新脏页:在往数据库插入或者更新一条数据的时候,我们知道数据库会在内存中把对应的字段更新了,但是更新之后,这些更新的字段并不会马上同步持久化到磁盘中,而是把这些更新的记录写入到redo log日志中去,等到空闲的时候,再通过redo log日志把最新的数据同步到磁盘中去。(备注:当内存数据页跟磁盘数据页内容不一致时,我们成这个内存页为“脏页”,当内存数据刷新到磁盘后,内存和磁盘的数据一致时,就称为“干净页”)
刷脏页有以下几种场景
(1)redo log 日志写满了:redo log日志里的内容是很有限的,如果数据库一直很忙,更新又很频繁,这个时候redo log很快就被写满了,这个时候就没办法等到空闲的时候再把数据同步到磁盘中去,只能暂停其他操作,全身心的把数据同步到磁盘中,而此时就会导致平时正常的SQL语句突然执行的很慢。
(2)内存不够用了:如果一次性查询较多的数据,而且恰好碰到所查询的数据页不在内存中,需要申请内存,而此时恰好内存不足的时候就要淘汰一部分内存数据页,如果是干净页就直接释放,如果恰好是脏页就要刷脏页。
(3)MySQL认为系统“空闲”的时候:这时候系统没什么压力。
(4)MySQL正常关闭的时候:这时候,MySQL会把内存的脏页都flush到磁盘上,这样下次MySQL启动的时候,就可以直接从磁盘上读取数据,启动速度会很快。
2. 拿不到锁: 我们要执行的这条SQL语句涉及到的表刚好别人在用,并且加锁了,我们拿不到锁,只能慢慢等待别人释放锁了。如果要判断是否真的在等待锁,可以使用 show processlist 这个命令来查看当前的状态。
针对情况2的原因:如果数据量一样的情况下,这条SQL语句每次都执行的很慢,那就是SQL语句书写的不理想
一个 SQL 执行的很慢,我们要分两种情况讨论:
大多数情况下很正常,偶尔很慢,则有如下原因
(1). 数据库在刷新脏页,例如 redo log 写满了需要同步到磁盘。
(2). 执行的时候,遇到锁,如表锁、行锁。
这条 SQL 语句一直执行的很慢,则有如下原因
(1). 没有用上索引:例如该字段没有索引;由于对字段进行运算、函数操作导致无法用索引。
(2). 数据库选错了索引。
数据库在刷新脏页,同步数据到磁盘的时候,就有可能导致我们的SQL语句执行的很慢了。
例如 当我们每次往数据库插入一条数据、或者要更新一条数据的时候,这时数据库会在内存中把对应字段的数据更新了,但是它在 更新后并不会马上同步持久化到磁盘中去,而是把这些更新的记录保存到 redo log 中的日记中,等到空闲的时候,才会通过 redo log 里面的日记,把最新的数据同步到磁盘中去, 但是 redo log 里面的容量是有限度的,如果数据库一直都插入或者 更新新的数据,当这种时候 redo log 很快就会被写满了,这时候就没有办法等到空闲的时候再把数据同步到磁盘,所以只能 暂时停止其他操作,来把新的数据同步到磁盘中去的,这个时候,就会导致我们平时正常的SQL语句突然执行的很慢
可能原因:
SQL语句执行影响的行数太多;
SQL语句行的有问题循环了;
电脑慢。
当我们要往数据库插入一条数据、或者要更新一条数据的时候,我们知道数据库会在内存中把对应字段的数据更新了,但是更新之后,这些更新的字段并不会马上同步持久化到磁盘中去,而是把这些更新的记录写入到 redo log 日记中去,等到空闲的时候,在通过 redo log 里的日记把最新的数据同步到磁盘中去。
当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。
系统在刷新脏页的时候,只能暂停其他操作,全身心来把数据同步到磁盘中去的,而这个时候,就会导致我们平时正常的SQL语句突然执行的很慢。
相关问题推荐
虽然从事开发行业的女生越来越多,但女生的比例还是远比不上男生。软件测试的男女生比例则基本相当,软件测试要求细心、耐心,大部分女生也是比较适合学的。而且软件测试课程分为手工测试和自动化测试,手工测试分为功能测试、性能测试、接口测试。自动化测试...
需要。很多人当初抱着测试不需要懂代码,才选择了这个行业,这个就要看对自己的职业定位了,是止步于月薪过万就可以了,还是往20k、30k去突破,如果这样的话,是肯定要会接口、会自动化,就必然要涉及到代码。如果真的看不懂代码,实际的测试后期的工作会出现...
在我看来游戏开发挺难的,尤其像手游一类的还有网游,里面有很多的程序代码而且伤神又费力,不过也有女生在这方面做的很好的,如果你感兴趣,非常想学,可以试试
软件测试专业现在很火热,很缺少人才,25岁学软件测试能学会,就业薪资也高,工作也相对轻松
测试类型有:功能测试,性能测试,界面测试。功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用...
这个其实和接口测试的场景密不可分的,比如说:外部接口测试: 必须先接口测试通过了,才能执行功能测试子系统或者各个模块之间的联调测试: 必须各子系统后台代码完成,并提供接口才可以完成测试,一般来说都要求各子系统功能测试通过后再进行...
这个是会因为公司的架构不同而不同的,并不是固定的,但是一般是会有专门的测试部门,或者叫质量保证部,也有可能是叫别的名字。
移动端测试,包括App兼容性测dao试,7*24小时稳定性测试,功耗性能测试,UI测试,交互测试等,课程主要学习的内容有:1、功能测试主要包括计算机基础、软件测试核心理论、Linux、数据库,学习目标是掌握软件测试核心理论,结合Linux、数据库等可实现移动端、w...
标题 1. 首先要做一个标题党(此标题党非彼标题党)。标题一定要清晰简洁易理解,不应该臃长 2. 尽量前缀要规范,例如模板: [Product][Version]_[Feature]_[Title],这样描述会很清晰,也方便查找 3. 缺陷的标题一定要描述在什么情况下发生了什么问...
1、 缺陷报告可以记录缺陷2、可以对缺陷进行跟踪管理3、可以对缺陷报告进行分类 总结 统计
1、缺陷编号(Defect ID),提交BUG的顺序。2、缺陷标题(summary),简明扼要的说明一下这个BUG。3、缺陷的发现者(DetectedBy) ,一般是自己。4、发现缺陷的日期(Detected on date),一般是当天。5、缺陷所属的模块(subject), 在测试哪个模块的时候发现的BUG...
缺陷标题好的缺陷标题需要让相关人员一目了然,一般建议的格式是条件+失败。缺陷类型缺陷类型也是根据具体的项目而定的。但一般情况下分为功能、界面、建议。重现步骤重现步骤的编写规则可以参考测试用例中的操作步骤 ,一定要足够详细、说明清楚问题的操作顺...
工具:NoSQLUnitJsTestDriverQTRunnerVenusFluintBuster.JSSQLUnitECUTQTestlibUnitilsgreatestDbUnitAbbotGoogleTest框架:JUnitMoqJSCaptureMockCUnitPyUnitCppUTestCppUnitzCUTcipra
JunitTestNGGoogleTestpytestunittestJmockitJaCoCogcov、lcov、gcovrCoverage.pyEvoSuiteDiffblue Cover
React Hooks测试库( Testing Library)是一个简单而完整的React Hooks测试工具。 React Hooks测试库让用户可以为React钩子创建简单的测试工具,自定义钩子的输入和检索输出,以处理在功能组件体内运行的情况。 使用React Hooks,用户不必为了测试而去担...
1、单元测试注重代码逻辑,接口测试注重业务逻辑;2、单元测试的粒度最小,是测试最小独立的单元模块(不依赖其他模块);接口测试不是,会覆盖很多;3、单元测试是白盒测试,接口测试是黑盒测试;4、单元测试关注的是代码的实现和逻辑,测试范围较小,保证实...