首页
学习
活动
专区
圈层
工具
发布

计算MySQL表碎片的SQL整理

这是学习笔记的第 2111 篇文章 在之前整理过一版MySQL的数据字典,整理了一圈,发现远比想象的复杂。 ?...当然整理的过程不光是知识梳理的过程,也是转化为实践场景的一个过程,通过这样一个体系,对于整个MySQL对象生命周期管理有了较为深入的认识,这里我来抛砖引玉,来作为深入学习MySQL数据字典的一个入口,这个问题就是...:如何较为准确的计算MySQL碎片情况?...: mysql> select *from INNODB_SYS_TABLESPACES where name like 'tgp_db/tgp_redis_command'\G ***********...其中对于逻辑大小的计算做了一些取舍,默认在MySQL中变化的数据在10%以外是会重新去统计计算的,所以我们可以把基数调整的稍大一些为1.1,然后以这个为基线,如果碎片率超过了200%则计入统计结果中。

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

    小白学习MySQL - 表空间碎片整理方法

    《小白学习MySQL - MySQL会不会受到“高水位”的影响?》曾提到了MySQL中数据删除的空间清理和文件释放的问题。碰巧看到姚老师这篇文章,《MySQL表空间碎片整理方法》,学习一下。...MySQL数据库中的表在进行了多次delete、update和insert后,表空间会出现碎片。定期进行表空间整理,消除碎片可以提高访问表空间的性能。...检查表空间碎片 下面这个实验用于验证进行表空间整理后对性能的影响,首先检查这个有100万记录表的大小, mysql> analyze table sbtest1; +----------------+-...整理表空间与性能提升 进行表空间整理, mysql> alter table sbtest1 force; Query OK, 333333 rows affected (10.73 sec) Records...这里使用的是MyISAM表进行测试,如果用InnoDB表,速度的提高没有这么明显,因为InnoDB的数据会缓存到InnoDB缓存中,MyISAM表的数据MySQL不进行缓存,OS可能会缓存,因此要得到准确的测试结果

    2.1K30

    技术分享 | MySQL 表空间碎片整理方法

    ---- MySQL 的表在进行了多次 delete 、update 和 insert 后,表空间会出现碎片。定期进行表空间整理,消除碎片可以提高访问表空间的性能。...检查表空间碎片 下面这个实验用于验证进行表空间整理后对性能的影响,首先检查这个有100万记录表的大小: mysql> analyze table sbtest1; +----------------+-...整理表空间与性能提升 进行表空间整理: mysql> alter table sbtest1 force; Query OK, 333333 rows affected (10.73 sec) Records...这里使用的是 MyISAM 表进行测试,如果用 InnoDB 表,速度的提高没有这么明显,因为 InnoDB 的数据会缓存到 InnoDB 缓存中,MyISAM 表的数据 MySQL 不进行缓存,OS...但对于 InnoDB 的表,不支持 OPTIMIZE TABLE 命令,可以用 alter table sbtest1 engine=innodb 代替,例如: mysql> OPTIMIZE TABLE

    2.3K30

    图解|Linux内存碎片整理

    内存碎片整理原理 内存碎片整理的原理比较简单:在内存碎片整理开始前,会在内存区的头和尾各设置一个指针,头指针从头向尾扫描可移动的页,而尾指针从尾向头扫描空闲的页,当他们相遇时终止整理。...最后结果: 经过内存碎片整理后,如果现在要申请 3 个地址连续的内存页,就能申请成功了。 内存碎片整理实现 接下来,我们将会分析内存碎片整理的实现过程。...内存碎片整理时机 当要申请多个地址联系的内存页时,如果申请失败,将会进行内存碎片整理。...如果需要进行内存碎片整理,那么调用 try_to_compact_pages() 函数进行内存碎片整理。...但由于内存碎片整理需要消耗大量的 CPU 时间,所以我们在申请内存时,可以通过指定 __GFP_WAIT 标志位(不等待)来避免内存碎片整理过程。

    4.3K51

    磁盘碎片整理到底整理了什么?

    因此不能把磁盘碎片整理理解成汽车保养。汽车更换机油,可能直接影响机械部件磨损。磁盘碎片整理更接近仓库重新摆货。...考试中只要看到B里的修复坏扇区并重新使用,就应该警觉,因为这已经偏离碎片整理程序的职责范围。所以B错。再看C,用磁盘碎片整理程序可以对内存进行碎片整理,以提高访问内存速度。...因此,现代系统中的内存管理和磁盘碎片整理从原理到实现都不是一个工具链。C把两个都带有碎片二字的概念拼到了一起,所以错误。回到D,用磁盘碎片整理程序对磁盘进行碎片整理,以提高磁盘访问速度。...题目问的是磁盘碎片整理程序的作用,传统教材里的标准答案依然是整理磁盘碎片,提高磁盘访问速度,因此选择D。...所以这道题最终应选择D,用磁盘碎片整理程序对磁盘进行碎片整理,以提高磁盘访问速度。

    12200

    信息碎片的收集与整理

    偶尔, 在这些嘈杂的信息环境中我们也会碰到少量让我们印象深刻或者觉得会有用处的内容,也就是「信息碎片」。俗话说:“好记性不如烂笔头”, 既然脑子记不住,我们可以通过工具把信息碎片记录下来。...因此, 对于信息碎片, 一般都被我们丢弃, 就算勉强被保存下来也会因为保存的工具操作不便或者对信息缺泛整理而被埋藏在深处不见天日。...然而, 我们却忽视了这些对我们进步能起到一定作用的碎片信息,点滴之水亦可汇聚成河 ,显然这是不应该的。...我一直在寻寻觅觅, 期待着能有这样的一款应用来帮我更好的整理碎片信息。...就在前两天, 我找到了解决这个问题的答案, 这款应用名曰:「存在」 , 专门针对整理碎片信息设计,交互操作体验一流, 能以最简洁的方式帮我们保存碎片信息, 并且在应用之中还有一整套体系帮助我们整理归纳碎片信息

    2.1K110

    一次生产环境mysql迁移操作(二)mysql空间释放(碎片整理)

    方案选择 暂时有两种方案选择: 1、停机数个小时,使用mysqldump进行备份(大表只最近导出10天的数据)和恢复,并将共享表空间设置为独立表空间 2、mysql使用OPTIMIZE 来进行碎片整理...经过对比1、2、3,方案一操作简单,比较灵活可以先导入近一天数据,以后的数据慢慢导入,方案二需要锁表,且时间太长,而我们数据库版本是5.5.47且innodb-file-per-table参数没设置,所以不适合该方案...--databases mysql> mysql_info_data.sql 4、使用mysqldump 分别导出 6个大表清理后的数据 cd /mnt/backup/mysql/ mysqldump...备注:mysql 5.6.7版本后会默认开启独立表空间innodb-file-per-table=on 当前服务现在使用的版本是5.5.47,所以需要在my.cnf中进行配置,而openstack用的是...添加下面一句: [mysqld] innodb-file-per-table=1 systemctl start mariadb mysql -uroot -p1 #查看设置是否生效,如果是on则说明已生效

    1.9K00

    Oracle 表碎片检查及整理方案

    大家好,我是 JiekeXu,很高兴又和大家见面了,今天和大家一起来看看 Oracle 表碎片检查及整理方案 很多时候,对于某张表有大量的 delete 删除操作,但是发现空间并未释放,这是高水位未下降的原因...大量删除操作会导致表的碎片过多,从而影响性能,检查表的碎片率一般使用存储过程 SPACE_USAGE 程序。下面详细介绍一下 SPACE_USAGE 程序。...分区表碎片查看示例 --分区表碎片查看 set serveroutput on declare v_unformatted_blocks number; v_unformatted_bytes number...a.avg_row_len * a.num_rows / 1024 / 1024 / b.seg_bytes_mb,2)) * 100) > 50 order by b.seg_bytes_mb desc; 表碎片整理...通过碎片整理来收缩空间,调整高水位线,方法比较简单,首先需要启用行移动,然后 alter table …… shrink space 即可完成,期间不会阻塞 DML 操作,可能时间会很久,建议业务低峰期间操作

    3.2K11

    【Mysql-InnoDB 系列】InnoDB 架构

    封面图片来自:mysql官方文档,8.0版本,InnoDB Architecture。 一 概述 ? 如上图所示,mysql的InnoDB存储引擎架构,包括了内存架构和磁盘架构两部分。...本章将阐述Mysql InnoDB的架构中的组成部分,并在后续系列文章中详细描述各部分的细节。...了解如何利用缓冲池将频繁访问的数据保存在内存中,是MySQL调优的一个重要方面。 ? 2.2 修改缓冲区 修改缓冲区是一个特殊的数据结构,用于缓存不在缓冲池中的那些二级索引页的变更。...MySQL 8.0.20版本之前,双写缓冲区存储空间归属于InnoDB的系统表空间。MySQL 8.0.20开始,双写表空间存储区域放在了双写文件中。...MySQL以循环方式写入重做日志文件。重做日志中的数据按照受影响的记录进行编码,这些数据统称为重做。重做日志的数据传递由不断增加的LSN值表示。

    2.1K10

    MySQL InnoDB引擎

    # 架构 # 概述 MySQL5.5 版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发中使用非常广泛。下面是InnoDB架构图,左侧为内存结构,右侧为磁盘结构。...参数设置: show variables like 'innodb_buffer_pool_size'; mysql> show variables like 'innodb_buffer_pool_size...MySQL的innoDB引擎中虽然没有直接支持hash索引,但是给我们提供了一个功能就是这个自适应hash索引。...(在MySQL5.x版本中还包含InnoDB数据字典、undolog等) 参数:innodb_data_file_path mysql> show variables like 'innodb_data_file_path...那实际上,我们研究事务的原理,就是研究MySQL的InnoDB引擎是如何保证事务的这四大特性的。 而对于这四大特性,实际上分为两个部分。

    2.4K10

    为什么早期的 Windows 需要整理碎片

    记得十几年前还在用早期 Windows 系统的时候,每用一段时间系统都会变得很卡顿,这时候需要打开系统提供的下面的磁盘碎片整理程序,当碎片整理完成后会感觉到系统变得稍微流畅了一些。...图 1 - Windows 磁盘碎片整理程序 在文件系统中,碎片整理(Defragmentation)是减少文件系统中碎片的过程[^2],该过程会将磁盘上相同文件的的内容按照顺序重新排列并利用压缩算法去除文件之间的空隙...总得来说,操作系统需要碎片整理主要有以下两个原因: 文件系统的设计使得资源被释放后出现很多碎片; 机械硬盘的随机读写性能比顺序读写差几个数量级; 文件系统 上古时代的 Windows 使用了非常简单的文件系统...FAT 是一种非常简单、原始的文件系统,它的设计和实现从今天的角度来看都很糟糕,每次写入文件时不仅不会检查空闲空间的大小、造成文件碎片,还不包含碎片管理功能,使用时间过长还需要用户手动触发磁盘的碎片整理...与机械硬盘相比,具有电子结构的固态硬盘能够更好地耐受碎片化的文件系统,而整理碎片反而会影响它的使用寿命。

    1.6K20

    mysql innodb核心

    | 1032 | # Innodb_buffer_pool_pages_dirty | 0 | #脏页比例 Innodb_buffer_pool_pages_total | 8192...| #总的页数 mysql核心特性CR 简称断电恢复 需要用到的 redo 重做日志 inndb log buffer, ib_logfile.n undo 回滚日志 lsn 数据页的lsn号码 最新的...读取表空间头部拿到老的lsn号码 2把修改过的数据页和redo日志加载到内存 3把数据页进行前滚 4调用数据页头上两个db_trx_id , db_roll_ptr进行undo回滚 ib buffer pool mysql...核心参数 innodb_buffer_pool_size 是mysql中最大的一块内存结构设置是物理内存50%-75% innodb_buffer_pool_chunk_size 它是一个分配单元大小...自动回收的机制 innodb_purge_rseg_truncate_frequency 触发自动回收条件 ,单位是检测次数 innodb_undo_directory undo日志的位置 io innodb_io_capacity

    2K41

    redis4.0 内存碎片整理源码解析

    如果使用的 redis-4.0 版本以上,可以通过配置开启 redis 自动碎片整理功能,下面我们就来通过源码看看 redis 自动碎片整理是如何工作的。...自动碎片整理相关配置 开启自动内存碎片整理(总开关) activedefrag yes 当碎片达到 100mb 时,开启内存碎片整理,默认为 100mb active-defrag-ignore-bytes...100mb 当碎片超过 10% 时,开启内存碎片整理,默认为 10 active-defrag-threshold-lower 10 内存碎片超过 100%,则尽最大努力整理 active-defrag-threshold-upper...碎片整理主循环 — activeDefragCycle 自动碎片整理的代码全部集中在 defrag.c 文件中,而其中最为重要的,就是上面函数中调用的 activeDefragCycle。...结语 本文基于 redis4.0 版本源码详细介绍了 redis 内存碎片的产生以及碎片自动整理、手动整理的过程。

    1.8K10

    如何优化 Windows 的磁盘碎片整理?

    优化机械硬盘(HDD)对于机械硬盘,定期进行碎片整理可以提升读写速度。打开磁盘碎片整理工具dfrgui设置自动优化计划在磁盘优化窗口中,选择目标磁盘。点击“更改设置”,勾选“按计划运行(推荐)”。...手动执行碎片整理选择目标磁盘。点击“优化”按钮,系统会自动执行碎片整理。3. 优化固态硬盘(SSD)对于固态硬盘,传统的碎片整理并不适用,应使用TRIM功能来优化性能。...系统会对SSD执行垃圾回收操作,而不是传统意义上的碎片整理。4. 禁用不必要的磁盘优化某些设置可能会对磁盘性能产生负面影响,需要禁用。禁用磁盘索引右键点击目标磁盘,选择“属性”。...清理磁盘空间磁盘空间不足会影响碎片整理的效果,因此需要定期清理。使用磁盘清理工具cleanmgr在弹出的窗口中选择目标驱动器,勾选“临时文件”、“回收站”等选项。

    2.1K21

    MySQL系列 | MySQL 和 InnoDB

    数据库和实例: 数据库:物理操作文件系统或其他形式文件类型的集合; 实例:MySQL 数据库由后台线程以及一个共享内存区组成; 02 数据库和实例 在 MySQL 中,实例和数据库往往都是一一对应的,...在 Unix 上,启动一个 MySQL 实例往往会产生两个进程,mysqld 就是真正的数据库服务守护进程,而 mysqld_safe 是一个用于检查和设置 mysqld 启动的控制程序,它负责监控 MySQL...03 MySQL架构 MySQL 从第一个版本发布到现在已经有了 20 多年的历史,在这么多年的发展和演变中,整个应用的体系结构变得越来越复杂: 最上层用于连接、线程处理的部分并不是 MySQL 『发明...05 如何存储表 MySQL 使用 InnoDB 存储表时,会将表的定义和数据索引等信息分开存储,其中前者存储在 .frm 文件中,后者存储在 .ibd 文件中,这一节就会对这两种不同的文件分别进行介绍...当 InnoDB 存储数据时,它可以使用不同的行格式进行存储;MySQL 5.7 版本支持以下格式的行存储方式: Antelope 是 InnoDB 最开始支持的文件格式,它包含两种行格式 Compact

    1.9K20
    领券