- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个大(500GB)innodb 表,我正在其中执行许多插入和删除操作。innodb_file_per_table 在我的 var 配置中设置。我知道它可能包含大量“浪费”的磁盘空间,由于 innodb 的性质,问题是预期有多少,以及是否有办法在我的特定表中找出该数字。据我了解,它重新使用了删除期间创建的未使用空间,因此如果我继续执行插入操作,在执行 re-claim procedure 时不会遇到任何重大差异?作为一条经验法则,磁盘空间浪费的上限和下限是多少,以及什么使用模式定义了它?
最佳答案
如果您启用了 innodb_file_per_table,我有一些好消息。除了对表进行碎片整理之外,您还可以做更多的事情。您可以缩小表格。为了了解您将回收多少空间,请按照以下步骤操作:
对于这些步骤,我们使用 InnoDB 表 mydb.mytable
GIVEN_DB=mydb
GIVEN_TB=mytable
MYSQL_CONN="-root -p...."
SQLSTMT="SELECT data_length+index_length FROM information_schema.tables WHERE"
SQLSTMT="${SQLSTMT} table_schema='${GIVEN_DB}' AND table_name='${GIVEN_TB}'"
IBDSIZE=`ls -l /var/lib/mysql/${GIVEN_DB}/${GIVEN_TB}.ibd | awk '{print $5}'`
TBLSIZE=`mysql ${MYSQL_CONN} --skip-column-names -Ae"${SQLSTMT}"`
(( FRGSIZE = IBDSIZE - TBLSIZE ))
FRAGPCT=`echo ${FRGSIZE}00/${IBDSIZE}|bc`
echo ${IBDSIZE} ${TBLSIZE} ${FRGSIZE} ${FRAGPCT}
这将打印 4 个数字
IBDSIZE
:从操作系统角度来看 InnoDB 单个表空间的大小TBLSIZE
:INFORMATION_SCHEMA 数据库中 InnoDB 表的大小FRGSIZE
:IBDSIZE
和 TBLSIZE
的差异(以字节为单位)FRAGPCT
:IBDSIZE
和 TBLSIZE
的百分比差异如果您不喜欢 FRAGPCT
的高度,可以通过三种方法来缩小 mydb.mytable
:
选项 1:优化表 mydb.mytable;
选项 2:更改表 mydb.mytable ENGINE=InnoDB;
选项 3:分阶段运行压缩
CREATE TABLE mydb.mytabletmp LIKE mydb.mytable;
INSERT INTO mydb.mytabletmp SELECT * FROM mydb.mytable;
DROP TABLE mydb.mytable;
ALTER TABLE mydb.mytabletmp RENAME mydb.mytable;
尝试一下!!!
关于mysql - Innodb 表有很多删除和插入操作 - 是否浪费了磁盘空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16143552/
Webassembly:我找不到此语法的引用 (f32.const -0x0p+0) .它代表什么数字/位模式?它来自引用解释器的测试文件: https://github.com/WebAssembl
分析后,我发现我的程序有很大一部分内存被多重虚拟继承所浪费。 这是 MCVE 来演示问题 ( http://coliru.stacked-crooked.com/a/0509965bea19f8d9
如何在通过多个加载语句插入记录时避免跳过主 ID? 我通过 LOAD 语句将包含 150 条记录的文件插入到表中。 插入后表中最后一个primary id为150。 现在,当我通过加载语句插入另一个包
我开始了一份新工作,我正在工作的项目部分的结构非常奇怪。每个页面都是一个 .Net aspx 页面,并且加载得很好,但在加载时并没有真正执行任何操作。一切实际上都是从 jquery document.
我是一名优秀的程序员,十分优秀!