暂无图片
有个慢查询没有执行完成,如果执行了flush tables 会出现等待,但是mysqldump导出没有问题,底层也执行flush tablbes
我来答
分享
暂无图片 匿名用户
有个慢查询没有执行完成,如果执行了flush tables 会出现等待,但是mysqldump导出没有问题,底层也执行flush tablbes

有个慢查询没有执行完成,如果执行了flush tables 会出现等待,但是mysqldump导出没有问题,底层也执行flush tables,这个flush  为什么能成功?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
周波

  mysqldump是否执行flush table是由命令选项决定的,并非每次执行都会执行flush tables语句。
  当执行mysqldump转储数据时,带上哪些选项才会执行flush tables呢?
  (1) --lock-all-tables
  在执行mysqldump命令时,带上 --lock-all-tables选项,mysqldump会在数据转储开始时执行‘flush tables with read lock;’语句,尝试关闭所有所有数据库下所有已打开的表,并施加全局的读锁,直到数据转储结束,才释放锁;若此时数据库中任一张表还在被使用,mysqldump将会被阻塞,直到所有数据库中所有表都没有被访问。
  (2) --master-data(MySQL8.0.26弃用)或–source-data(自MySQL8.0.26启用)
  当执行mysqldump命令时,带上 --master-data选项,该选项会自动关掉 --lock-tables(对表施加本地读锁),打开 --lock-all-tables。
  (3) --master-data和 --single-transaction
  当执行mysqldump命令时,同时带上 --master-data和 --single-transaction选项时,全局读锁只在转储开始的一小段时间内获得。
  其它情况,mysqldump都不会执行flush tables with read lock来获取全局读锁,当数据转储时,存在慢查询,也不会阻塞mysqldump。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
下列关于MySQL锁的说法错误的是
回答 1
已采纳
D为了避免活锁现象的发生,DBMS采用资源分配图的方法来处理事务的数据操作请求
这个储存过程的报错,错在哪里?报错SQL syntax有问题
回答 1
已采纳
存储过程里1.set方式赋值set@result0;2.或selectinto方式declarevtitlevarchar(30);selectid,contentintovtitle,vconten
在navicat执行sql的耗时为什么显示两个时间?
回答 2
有时第二个时间比第一个时间大很多,是为什么呢?
当 MYSQL 出现时间插入失败的兼容性错误时如何解决?
回答 1
已采纳
可以试下下面方法vi/etc/my.cnf 在[mysqld]下面添加如下列:sqlmodeSTRICTTRANSTABLES,NOAUTOCREATEUSER,NOENGINESUBSTI
mysql对客户端连接是否有心跳机制?
回答 1
已采纳
没关系。客户端没有心跳。应用有,会发出select1这样的。是spring做的。
mysql的列宽怎么调整?
回答 1
修改表中字符串长度?
mysql导入2.4g的sql文件花费了一上午,还没还原,有什么好办法吗?
回答 1
如果您的sql文件内容是insertinto这种方式的,那就只能等着了。如果能重新导出,建议做成txt纯数据格式。例如:使用loaddata或mysqlimport工具,百度一下或参考https://
MYSQL 工具: GO 语言开发的 遇到个BUG -ignore-primaryKey-forInsert 添加该参数,不生成SQL文件?
回答 1
代码贴出地址来
Using temporary; Using filesort ,这2个是不是只有出现了,都代表没有走索引?
回答 2
是不是走索引,主要看TYPE和USINGINDEX.
mysql执行计划
回答 2
DEPENDENTSUBQUERY是一定要改的。这个指子查询依赖外部表的条件,如果外部表有10W行。那么子查询将执行10W次。一般DEPENDENTSUBQUERY都可以用innerjoin来解决