大家都知道,Ext3并不是最有效的文件系统,例如,删除文件会非常缓慢(那真是一个痛苦的过程,不是吗老兄?),造成大量的随机I / O。然而事实上,有时候它比你想象的更能影响MySQL的性能。那么,什么时候会发生,又为什么会发生呢?

当您运行

DROP TABLE

时,会有好几件事情需要去做:对表进行write lock,这样它不会被其他线程使用;存储引擎删除数据文件;当然,最后MySQL会删除表定义文件(.frm文件)。这还不是所有的事,还有另外一件事需要去做:

代码:

VOID(pthread_mutex_lock(&LOCK_open));

error= mysql_rm_table_part2(thd, tables, if_exists, drop_temporary, 0, 0);

pthread_mutex_unlock(&LOCK_open);

这整段删除表操作的代码都被

LOCK_open

互斥信号量所包围。这个互斥信号量在MySQL中不少地方都用到过,但主要是表在开启或关闭的时候。这意味着,当

LOCK_open

锁定时,没有查询语句可以执行,因为他们阻止任何访问。

这就解释了在ext3文件系统上删除10GB的文件何时成为了痛苦的等待的开始。删除10GB的文件将持续一段时间,如果这是一个MySQL表,这段时间mutex里将会一直存在,而这个互斥会拖延所有查询。

纯文字

代码:

+―

相关标签: 系统 影响

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql drop table很慢_MYSQL缓慢的drop table 操作_MySQL相关推荐

  1. mysql update语句很慢_缓慢的update语句性能分析

    最近处理一个问题的时候,先是收到DB time升高的报警,然后查看DB time的情况发现,已经有近1000%的负载了. 最近处理一个问题的时候,先是收到DB time升高的报警,然后查看DB tim ...

  2. mysql实例管理工具巨杉_实例管理工具_操作_MySQL实例_关系型数据库实例_文档中心_SequoiaDB巨杉数据库...

    实例管理工具 sdb_mysql_ctl 是 MySQL 实例组件的管理工具.用户通过 sdb_mysql_ctl 既可以初始化.启动和停止实例,也可以修改实例的引擎配置参数. 参数说明 参数 描述 ...

  3. mysql alter table drop primary key_删除主键: Alter table tabname drop primary key(col)

    下列语句部分是Mssql语句,不可以在access中使用.|4J,Y,FzYS*q A0x051Testing软件测试网)c#QS"?f{ SQL分类:d2HM[]$rw0DDL-数据定义语 ...

  4. mysql中checktable语句来_MySQL的命令check table用法

    MySQL日志文件里出现以下错误,MySQL表通常不会发生crash情况,一般是在更新数据库时MySQL停止会导致. CHECK TABLE语法 CHECK TABLE tbl_name[,tbl_n ...

  5. oracle drop column 多个,3000W记录,alter table drop column很慢

    最初由 yzm2008 发布 [B]Alter table T set unused(COLUMN) 和 drop column有什么区别吗? [/B] SET UNUSED Clause Speci ...

  6. mysql有没有批量游标_MySQL使用游标批量处理进行表操作_MySQL

    一.概述 本章节介绍使用游标来批量进行表操作,包括批量添加索引.批量添加字段等.如果对存储过程.变量定义.预处理还不是很熟悉先阅读我前面写过的关于这三个概念的文章,只有先了解了这三个概念才能更好的理解 ...

  7. 用心整理,1000行MySQL命令,很实用,建议收藏

    基本操作 /* Windows服务 */-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_pat ...

  8. mysql的日常操作_MySQL日常操作

    原标题:MySQL日常操作 安装 MySQL 5.5.27 x64 一直 next 勾选使用图形化配置 选择 尽量占用最大内存 选择 多功能型 选择 最多人数 选择 utf8 字符集 选择 添加pat ...

  9. mysql 插入删除操作_MySQL——增删改操作

    插入语句 一次插入操作只插入一行数据 insert into [tablename](listname1,listname2,......) values (value1,value2,......) ...

最新文章

  1. Codeforces 900D Unusual Sequences:记忆化搜索
  2. hibernate中inverse作用
  3. pgsql_sql查询效率优化
  4. 用手动和自动分别实现使用其DVD安装盘作为本地yum源
  5. android tcp判断服务器是否断开,Android tcp客户端连接,然后从java服务器断开连接...
  6. HDU 4701 Game
  7. python通信模块_基于Python的电路故障诊断系统通信模块的实现
  8. 游戏开发之初识C++模板(C++基础)
  9. Win10将中文用户名修改为英文
  10. 史上最全idea插件开发入门实战(傻瓜式教程)
  11. 【龙印】以程序员的角度整定3d打印机的pid实现控温
  12. 读书笔记----10日摘抄整理(03)
  13. ASEMI低压降肖特基二极管怎么检测,低压降肖特基有什么优势
  14. 图解刘谦如何手穿玻璃桌(详细图文说明)
  15. 如何用计算机求特征值特征向量,特征值和特征向量计算器为4X4的实矩阵
  16. HBuilder教程
  17. 非监督神经网络的wake-sleep算法
  18. androidjni开发!应聘高级Android工程师历程感言,快来收藏!
  19. ubuntu下安装navicat
  20. 跨境电商小白:一件代发是什么?为什么要选择Starday一件代发?

热门文章

  1. HTC vive 和unity的交互 入门
  2. 用chrome dev tools 强制js注入
  3. Mac系统下 brew 更换清华源
  4. SCT2450QSTER 芯洲DCDC降压变换器 P2P替代TPS54540Q
  5. Lenovo-ThinkCentre-M730s 电脑 Hackintosh 黑苹果efi引导文件
  6. css元素显示模式(行内、块级、行内块)
  7. grubby - Unix,Linux命令 修复飘盘的情况
  8. 最简单linux服务器搭建web教程和视频
  9. hihocoder 1441
  10. 新媒体运营胡耀文教程:短视频脚本的3个套路,新手也能做爆款