mysql 删表引出的问题

这篇具有很好参考价值的文章主要介绍了mysql 删表引出的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

将测试环境的表同步到另外一个数据库服务器中,但有些表里面数据巨大,(其实不同步该表的数据就行,当时没想太多),几千万的数据!!

步骤

1. 既然已经把数据同步过来的话,那就直接delete掉就行,多大的事呢? 于是

delete from table_name where 1=1;

复制

结果傻眼了,执行了一会儿就卡死了,对卡死了!

2. 那么问题来了,是不是死锁了呢?那怎么判断死锁呢?

SHOW PROCESSLIST;

复制

mysql 删表引出的问题

执行这个命令可以查看数据库当前的进程

3. 查看当前的事物

#当前运行的所有事务
mysql> SELECT * FROM information_schema.INNODB_TRX;

#当前出现的锁
mysql> SELECT * FROM information_schema.INNODB_LOCKs;

#锁等待的对应关系
mysql> SELECT * FROM information_schema.INNODB_LOCK_waits;

复制

如果你是linux上直接执行mysql命令的话可以这样执行

SELECT * FROM information_schema.INNODB_TRX\G 这样的话会换行展示数据,更人性化

4. 可以通过kill命令来干掉一些数据库的进程

mysql 删表引出的问题

kill 2;

复制

这样既可,这样只是解决了卡死的问题,执行同样的命令还是会卡死的 ;

5. 那就想想为什么会卡死呢 ?原来有个这么一个参数

一般等待超时的时候会抛出这样的异常:

Lock wait timeout exceeded; try restarting transaction

是因为mysql的话,默认锁等待时间是50s,就是说50s后就会报错,所以需要修改下个时间

mysql的配置一般都是在my.cnf文件中,自己找下

新增/修改innodb_lock_wait_timeout=500既可

6. 修改后重启mysql,这里面又涉及到mysql的关闭

bin/mysqladmin -uroot -p shutdown

复制

就关闭了sql的,不建议直接kill -9 ,不知道会出现什么幺蛾子

重启的话,还是用mysql_safe去启动既可

7. 其实把,删除表数据的话,用truncate就行的 ,

truncate table table_name;

复制

8. 那么就比较下 drop,truncate,delete的区别吧

  a. drop是整个表都没有了的,表结构也没没有了的,truncate和delete的表结构还在;

  b. delete可以指定where条件删除哪一行,truncate是整个表的;

  c. 来百度一下,^_^

1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. 2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动 显然drop语句将表所占用的空间全部释放 truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始). 4.速度,一般来说: drop>; truncate >; delete 5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及文章来源地址https://www.toymoban.com/news/detail-491906.html

到了这里,关于mysql 删表引出的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mybatis引出的一系列问题-动态 SQL

    动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。 使用动态 SQL 最常见情

    2024年02月14日
    浏览(37)
  • Mybatis引出的一系列问题-JDBC 的探究

    一般来说,Java应用程序访问数据库的过程是: 装载数据库驱动程序; 通过jdbc建立数据库连接; 访问数据库,执行sql语句; 断开数据库连接。 程序开发过程中,存在很多问题: 首先,每一次web请求都要建立一次数据库连接。建立连接是一个费时的活动,每次都得花费0.05

    2024年02月14日
    浏览(39)
  • keycloak~EventListenerProvider初始化kafka引出的类加载问题

    keycloak提供的事件处理机制,可以通过实现EventListenerProvider接口来实现自定义的事件处理逻辑。在keycloak启动时,会通过ServiceLoader机制加载所有的EventListenerProvider实现类,并将其注册到keycloak的事件处理机制中。 构造方法,在每个keycloak后台操作时,它都会重新构建实例 OnEv

    2024年02月17日
    浏览(39)
  • 因为axios请求后端,接收不到token的问引出的问题

    相关概念 什么是跨域? 跨域指的是在浏览器环境下,当发起请求的域(或者网站)与请求的资源所在的域之间存在协议、主机或端口中的任何一个条件不同的情况。换句话说,只要协议、主机或端口中有一个不同,就会被认为是跨域请求。 具体来说,以下情况都属于跨域请

    2024年02月10日
    浏览(44)
  • MSVS C# Matlab的混合编程系列1 - 看似简单的问题引出

    问题提出,如何把Matlab(本文简称MT)的算法集成到Visual Studio(本文简称VS)里面运行? 本文,通过编制一个MT中最简单的加法函数,我们把他做成 MSVS C#能够使用的动态库,说明了MSVS C# 和 MT集成的最小,然而,最简洁清晰的处理方法和过程。  1 VS2019 2 C# .Net 应用环境 3 MT2019 指的

    2024年01月21日
    浏览(34)
  • flink- mysql同步数据至starrocks-2.5.0之环境搭建

    一般需要以下几个服务: mysql flink flink-taskmanager flink-jobmanager starrocks starrocks-fe starrocks-be docker-compose.yml 配置文件 启动: docker-compose up -d : 登陆 starrocks 注意事项 mysql开启 bin log mysql 基于cdc ,采用 binlog模式,所以要开启binlog, conf/my.cnf : docker 服务放到同一docker网络中 如果不在同

    2024年02月10日
    浏览(50)
  • canal实时同步mysql数据到elasticsearch(部署,配置,测试)(一)

    canal基于MySQL数据库增量日志解析,提供增量数据订阅和消费,是阿里开源CDC工具,它可以获取MySQL binlog数据并解析,然后将数据变动传输给下游。基于canal,可以实现从MySQL到其他数据库的实时同步 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫

    2023年04月08日
    浏览(43)
  • es与mysql的数据同步问题

    方案一:同步调用  缺点:1.业务耦合             2.降低整体性能             3.当一个业务出现问题则直接卡死 方案二:异步通知(解除了两个服务之间的耦合)  缺点:比较依赖与mq 方案三:监听MySQL的binlog日志  三种方式优缺点对比  方案二: 1.引入依赖 2.编写配置

    2023年04月17日
    浏览(43)
  • 电商类面试问题--01Elasticsearch与Mysql数据同步问题

    在实现基于的搜索时,首先需要确保MySQL数据库和ES库中的数据是同步的。为了解决这个问题,可以考虑两层方案。 全量同步:全量同步是在服务初始化阶段将MySQL中的数据与ES库中的数据进行全量同步。可以在服务启动时,对ES库进行全量数据同步操作,以确保数据的

    2024年02月10日
    浏览(39)
  • Elasticsearch和MySQL之间的数据同步问题

    前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章参考网上的课程,介绍Elasticsearch和MySQL之间的数据同步问题。 如果文章有什么需要改进的地方还请大佬不吝赐教 👏👏。 小威在此先感谢各位大佬啦~~🤞🤞 🏠个人主页:小威要向诸佬学习呀 🧑个人

    2023年04月19日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包