首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL - 了,但是很慢

mysql 上执行了一句 drop database 半天没有完成,详细的慢查询日志如下,那当时MySQL 在做什么呢?...可以看到在时调用的是 mysql_rm_db 这个函数,而这个函数又调用了 mysql_rm_table_no_locks 函数,mysql_rm_table_no_locks 会去清理数据字典。...那为什么会慢呢?回答这个问题还需要更加深入地分析才行。 ---- OFF-CPU 如果一个进程所依赖的所有资源都已经准备好,那它就可以被调度到 cpu 上执行。...我在分析清理文件的时候发现 vfs 并没有 rm_file 这样的 API ,而是采用“以写代” 的方式来完成删除操作; 也就是说操作系统并不直接去删除文件,而是把文件系统里面对应的 inode 标记为...---- 结论 通过函数调用堆栈(火焰图)我们可以知道,删除一个依赖于删除这个下所有的表,删除一个表不只要清理数据字典还要删除磁盘文件。

2.4K20

MySQL系列】- binlog预防跑路

说白了就是二进制日志记录了对 MySQL 数据执行更改的所有操作,若操作本身没有导致数据发生变化,该操作可能也会写入二进制文件。...这些事件使数据从备份点更新,数据将变化恢复到指定的时间点(Point-in-time)。...主从复制(replication):主数据向从数据发送binlog到从数据,从数据执行和复制binlog从而将数据恢复到从数据中。...审计(audit):用户可以通过二进制日志中的信息来进行审计,判断是否有对数据进行注入的攻击。 binlog的格式 MySQL有好3种格式记录binlog,具体的格式取决于MySQL数据的版本。...参考: ❝https://dev.mysql.com/doc/refman/5.7/en/binary-log.html https://baike.baidu.com/item/Mysql%20Binlog

81530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    线上数据错了,差点被老板开除

    正常情况下还好,但如果操作数据时出现失误,比如: 删除订单数据时where条件写错了,导致多删了很多用户订单。 更新会员有效时间时,一次性把所有会员的有效时间都更新了。...修复线上数据时,改错了,想还原。 还有很多很多场景,我就不一一列举了。 如果出现线上环境数据误操作怎么办?有没有后悔药? 答案是有的,请各位看官仔细往下看。...(为了装逼,把自己也坑了,哈哈哈) 线上环境有时候需要通过命令行连接数据,比如:mysql,你把sql语句复制过来后,在命令行界面执行,由于屏幕滚动太快,这时根本无法确定sql是否都执行成功。...很多时候,由于我们人为失误,把where条件写错了。但没有怎么仔细检查,就把sql语句直接执行了。影响范围小还好,如果影响几万、几十万,甚至几百万行数据,我们可能要哭了。...他们给出的理由是:节省数据的存储空间。 想法是好的,但是现实很残酷。 如果有条极重要的数据错了,想恢复怎么办? 此时只剩八个字:没有数据,恢复不了。

    84711

    MySQL到跑路(一)——MySQL数据简介

    MySQL是一个关系型数据管理系统,MySQL是一种关联数据管理系统,关联数据将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。...phpMyAdmin是由php写成的MySQL资料系统管理程式,让管理者可用Web界面管理MySQL资料。   ...二、MySLQ存储引擎 1、MySQL存储引擎简介 插件式存储引擎是MySQL数据最重要的特性之一,用户可以根据应用的需要选择如何存储和索引数据,是否使用事务等。...MySQL Workbench(GUITOOL)一款专为MySQL设计的ER/数据建模工具,是著名的数据设计工具DBDesigner4的继任者。...64.rpm MySQL开发MySQL-devel-5.6.35-1.el6.x86_64.rpm MySQL共享MySQL-shared-5.6.35-1.el6.x86_64.rpm 嵌入式版本

    2K20

    跑路技巧 跑路命令

    IT 界的有一个老梗,一次某论坛的数据管理员抱怨自己老板一直虐待他,结果他一气之下就跑路了…… 跑路,这一几乎每个程序员都懂得一个都市传说,让sudo rm -rf成了大佬蒙骗萌新的高频词汇...值得注意的是,犯罪嫌疑人已通过登录账号和IP地址被追查到,并且并非误操作,而是故意。 好吧,言归正传。本文我们来讨论下,程序员如何优雅地跑路。 1..../ -name mysql # 删除找到的关于mysql的一切 rm -rf /var/lib/mysql rm -rf /var/lib/mysql rm -rf /usr/lib64/mysql...中 可以即使在root用户下还是有些文件不了,但是这些根本就不会影响到你需要跑路的后果。...完毕 完毕大部分命令失效,操作系统以及基本不可以用 重启试试 可以看到系统基本废了,不能用了,有风险使用需谨慎 开始跑路 8.后记 十二提醒你:道路千万条,数据第一条

    3.4K20

    不必跑路!详解 MySQL 数据恢复

    链接:http://dwz.date/caSp 日常工作中,总会有因手抖、写错条件、写错表名、错连生产造成的误删表和数据的事情发生。但是,如果每次都跑路的话,怕是再也不好找工作了吧!...所以,跑路不是上上策。 1、前言 数据恢复的前提的做好备份,且开启 binlog,格式为 row。如果没有备份文件,那么删掉表后就真的删掉了,lsof 中还有记录的话,有可能恢复一部分文件。...延迟停止同步 stop slave; 找出执行了 drop table 语句的前一句的 pos 位置 [mysql@mysql-test ~]$ mysqlbinlog -vv /data/mysql_log.../; DROP TABLE `b` /* generated by server */ 从结果中我们可以看到 drop 所在语句的前一句开始位置是 35134,所以我们同步到 35134(这个可别选错了...限制: binlog 格式必须为 row,且 binlog_row_image=full; 仅支持5.6与5.7; 只能回滚 DML(增、、改)。

    1.3K30

    不跑路:论MySQL数据恢复

    日常工作中,总会有因手抖、写错条件、写错表名、错连生产造成的误删表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA。...如果没有备份文件,那么删掉表后就真的删掉了,lsof 中还有记录的话,有可能恢复一部分文件,但若刚好数据没有打开这个表文件,那就只能跑路了。...> mytest_table_insert.sql # 恢复表结构到 mytest mysql -u -p mytest < mytest_table_create.sql # 恢复表数据到...; DROP TABLE `b` /* generated by server */ 从结果中我们可以看到 drop 所在语句的前一句开始位置是 35134,所以我们同步到 35134 (这个可别选错了...是由美团点评公司技术工程部开发维护的一个回滚 DML 操作的工具,项目链接 MyFlash 限制: binlog格式必须为row,且 binlog_row_image=full 仅支持5.6与5.7 只能回滚DML(增、

    1.6K20

    MySQL到跑路_高级(三)——视图

    视图包含一系列带有名称的数据列和数据行,但视图中的数据并不真实存在于数据中,视图返回的是结果集。...2、创建视图的目的 视图是存储在数据中的查询的SQL语句,创建视图主要出于两种原因: A、实现安全。视图可设置用户对视图的访问权限。...C、视图对重构数据提供了一定程度的逻辑独立性 数据的物理独立性是指用户的应用程序不依赖于数据的物理结构。...数据的逻辑独立性是指当数据重构造时,如增加新的关系或对原有的关系增加新的字段,用户的应用程序不会受影响。层次数据和网状数据一般能较好地支持数据的物理独立性,而对于逻辑独立性则不能完全的支持。...在关系数据中,数据的重构造往往是不可避免的。重构数据最常见的是将一个基本表“垂直”地分成多个基本表。

    1.2K10

    MySQL到跑路_高级(八)——事件

    事件取代了原先只能由操作系统的计划任务来执行的工作,而且MySQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次...2、事件的优点 A、对数据定时性操作不再依赖外部程序,而直接使用数据本身提供的功能。 B、可以实现每秒钟执行一个任务,在一些对实时性要求较高的环境下非常实用。...DISABLE ON SLAVE] [COMMENT 'comment']DO event_body; event_name :事件名,不能超64个字符,名字必须是当前Dateabase中唯一的,同一个数据不能有同名的...2、事件调度器的开启 MySQL默认关闭事件调度器。...global variables like '%event_scheduler%';SHOW PROCESSLIST; 开启事件调度器 set global event_scheduler=ON; 在MySQL

    1K10

    MySQL到跑路_高级(六)——索引

    MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的。...2、索引的优点 A、提高数据检索效率,降低数据的IO成本。 B、通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗。 C、大大加快数据的查询速度。...B、使用短索引 C、索引列排序 因此数据默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。...3、查看索引占用的磁盘空间 schoolDB数据索引占用的磁盘空间。...possible_keys:MySQL在搜索数据记录时可以选用的各个索引 key:实际选用的索引 key_len:显示MySQL使用索引的长度(使用的索引个数),当key字段的值为 null时,索引的长度就是

    1.2K20

    MySQL到恢复,还用跑路吗?

    备份 MySQL 中的逻辑备份是将数据中的数据备份为一个文本文件,备份的文件可以被查看和编辑。...]> insert into test values (4,'d'); Query OK, 1 row affected (0.00 sec) 3.数据突然故障(其实是小伙伴没事儿练手玩儿),数据无法访问...需要恢复备份: 跑路: # 这里为了便于测试,不把操作记入日志,当前 session 设置 sql_log_bin 为 off。...# 后,执行 flush logs,让后续的 binlog 到新的文件中,即名为 mysql-bin.000003中 MySQL [t2]> set sql_log_bin = 0; Query OK...-+------+ 2 rows in set (0.00 sec) 4.使用 mysqlbinlog 恢复自 mysqldump 备份以来的 binglog 根据前面操作的内容,可知从备份的时间点到的时间点之间的操作被记录到了

    1.3K50

    MySQL到跑路(五)——SQL查询

    select * from TStudent where sname like '%志%' or class='net'; 10、查询结果不重复 在SELECT语句中可以使用DISTINCE关键字指示MySQL...studentid<=10 union select studentid, sname from TStudent where sname like '王%'; 13、为表和字段取别名 为字段取别名 MySQL...MySQL不支持全外连接。可以通过左外和右外求合集来获取全外连接的查询结果。...三、对查询结果排序 MySQL中可以通过在SELECT使用ORDER BY子句对查询的结果进行排序。 1、单列排序 ASC代表结果会以由小往大的顺序列出,而 DESC 代表结果会以由大往小的顺序列出。...MySQL用WHERE子句对正则表达式提供了初步的支持,允许指定用正则表达式过滤SELECT检索出的数据。 在SQL查询语句中,查询条件REGEXP后所跟的东西作为正则表达式处理。

    2.5K30

    临近五一,小林我了,要跑路吗?

    心里慌的一批的小林,跟我的朋友们说了这件事,朋友建议我先第一时间上报给 leader,不要把的事情瞒着。 于是,小林就向 leader 说了我事情,本以为会被痛批一顿。...不过你这么一整,我突然想起编译服务器半年没备份,我先备份一下我的编译服务器,防止哪天也被你们了。” 我:“????” 吃瓜的小伙伴,是不是觉得小林要跑路了?...哈哈哈,小林没跑路,反而是恢复了回来,所以接下来说说小林是如何「从到恢复」的。 正文 初探案发现场 来看看小林写的垃圾代码,是如何引发这次的。 ?...遇到 rm -fr /* 事件发生,一定要沉住气,稳住心态 本次事件,之所以小林能幸运的恢复回来,有非常关键两点: 小林发现脚本执行不正常,果断立马的掐断它,没有造成重要的数据信息被删除,如果掐断的时候再晚一点...小林现在是一个没跑路的男人了,Goodbye, 我们下次见。

    2.7K20

    MySQL到跑路_高级(四)——存储过程

    作者:天山老妖S 链接:http://blog.51cto.com/9291927 一、存储过程简介 1、存储过程简介 存储过程是一组具有特定功能的SQL语句集组成的可编程的函数,经编译创建并保存在数据中...存储过程是数据管理中常用的技术之一,可以很方便的做些类似数据统计、数据分析等工作,SQL SERVER、ORACLE、MySQL都支持存储过程,但不同的数据环境语法结构有所区别。...而且数据专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。 C、存储过程能实现较快的执行速度。...针对同一个数据对象的操作(如查询、修改),如果操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载...4、存储过程信息的查看 show procedure status; 显示数据中所有存储的存储过程基本信息,包括所属数据,存储过程名称,创建时间等。

    73340

    MySQL到跑路_高级(九)——存储过程

    游标的作用就是用于对查询数据所返回的记录进行遍历,以便进行相应的操作。...2、游标的特性 游标具有三个属性: A、不敏感(Asensitive):数据可以选择不复制结果集 B、只读(Read only) C、不滚动(Nonscrollable):游标只能向一个方向前进,并且不可以跳过任何一行数据...3、游标的优点 游标是针对行操作的,对从数据中SELECT查询得到的结果集的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。游标是面向集合与面向行的设计思想之间的一种桥梁。...数据大部分是面对集合的,业务会比较复杂,而游标使用会有死锁,影响其他的业务操作,不可取。 当数据量大时,使用游标会造成内存不足现象。...5、游标的适用场景 MySQL数据中,可以在存储过程、函数、触发器、事件中使用游标。

    75430
    领券