SAV*_*AFA 3 mysql database innodb full-text-search
我有一个大型数据库,其中包含大约 240Gb 的数据和索引(从phpMyAdmin- 我的表位于 中读取innodb)。然而,服务器上的数据库文件夹大小接近 400Gb,而我的ibdata1文件大小约为 6Gb,导致 SSD 空间不足。
我调查了一下,似乎有很多文件,FTS_0000000000000f86_00000000000019db_INDEX_1.ibd大小有几十GB。它们看起来(根据它们的文件名)是我的关联表的全文索引,并且每个都有 6 个 (FTS_*_INDEX_1.ibd到FTS_*_INDEX_6.ibd)。
我已经完成了搜索并发现了这些帖子:
和
我已经在这两个问题/答案的评论中提出了我的问题,但尚未得到回复。所以我决定在这里直接问我的问题。
如果我启用“InnoDB Cleanup” innodb_file_per_table(如上面第一个链接中建议的那样),我还会有很多像FTS_\*_INDEX_1.ibd我的数据库文件夹一样的大文件吗?这种方法仅有助于减小ibdata1文件大小吗?经常OPTIMIZE TABLE在这些巨大的桌子上(按照建议)可以帮助我解决我的问题吗?
谢谢!
更新:
以下是大于 1Gb 的文件列表,按文件大小反向排序(文件名已更改):
-rw-rw----. 1 mysql mysql 1300234240 Jan 30 18:28 FTS_0000000000000fc2_DELETED.ibd
-rw-rw----. 1 mysql mysql 1375731712 Jan 7 21:41 FTS_0000000000000f86_00000000000019db_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 1585446912 Jan 30 23:17 FTS_0000000000001000_0000000000001a68_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 1593835520 Jan 7 21:41 FTS_0000000000000f86_00000000000019bf_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 1673527296 Jan 29 23:41 FTS_0000000000001000_DELETED.ibd
-rw-rw----. 1 mysql mysql 1824522240 Jan 7 21:41 FTS_0000000000000f86_00000000000019cd_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 2172649472 Jan 30 01:16 FTS_0000000000001073_0000000000001b3c_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 2281701376 Jan 7 21:41 FTS_0000000000000f86_00000000000019b1_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 2357198848 Jan 31 02:53 FTS_0000000000000fc2_0000000000001a0f_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 2495610880 Jan 28 13:59 FTS_0000000000000fc2_0000000000001a2b_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 2906652672 Jan 30 23:18 FTS_0000000000001000_0000000000001a76_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 3984588800 Jan 30 23:18 FTS_0000000000001000_0000000000001a6f_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 4135583744 Jan 30 08:03 FTS_0000000000000fc2_00000000000019fa_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 5716836352 Jan 28 13:59 FTS_0000000000000fc2_0000000000001a01_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 6400507904 Jan 31 05:39 my_k.ibd
-rw-rw----. 1 mysql mysql 7449083904 Jan 7 21:41 FTS_0000000000000f86_00000000000019d4_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 8115978240 Jan 7 21:41 FTS_0000000000000f86_00000000000019c6_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 8308916224 Jan 30 08:03 FTS_0000000000000fc2_0000000000001a16_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 8434745344 Jan 7 21:41 FTS_0000000000000f86_00000000000019b8_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 9244246016 Jan 7 21:41 FTS_0000000000000f86_00000000000019aa_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 9714008064 Jan 30 01:16 my_a.ibd
-rw-rw----. 1 mysql mysql 12738101248 Jan 31 05:43 my_s.ibd
-rw-rw----. 1 mysql mysql 14038335488 Jan 31 02:53 FTS_0000000000000fc2_0000000000001a24_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 19906166784 Jan 30 08:03 FTS_0000000000000fc2_0000000000001a1d_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 21185429504 Jan 31 05:43 my_p_s.ibd
-rw-rw----. 1 mysql mysql 29242687488 Jan 31 02:54 FTS_0000000000000fc2_0000000000001a32_INDEX_1.ibd
-rw-rw----. 1 mysql mysql 30131879936 Jan 5 16:35 my_p.ibd
-rw-rw----. 1 mysql mysql 47085256704 Jan 31 05:43 my_a_c.ibd
-rw-rw----. 1 mysql mysql 76499910656 Jan 31 05:43 my_p_c.ibd
-rw-rw----. 1 mysql mysql 76743180288 Jan 30 00:09 my_r.ibd
Run Code Online (Sandbox Code Playgroud)
正如您所怀疑的,这些FTS_*.ibd文件是 InnoDBFULLTEXT索引文件。缩小这些文件的最佳方法通常是删除并重新创建FULLTEXT索引。执行此操作OPTIMIZE TABLE可能有帮助,也可能没有帮助,具体取决于您是否已innodb_optimize_fulltext_only启用,但回收空间的最安全选择是删除/添加。
在仅插入工作负载上,删除/添加通常会使文件更小,如果这些表进行大量更新和/或删除,那么删除/添加节省的大小应该更大。大文件的存在FTS_*_DELETED.ibd意味着您已经从这些表中删除了一些数据,因此删除/添加索引将为您节省一些磁盘空间。
您可以使用SHOW CREATE TABLE来查找现有 FULLTEXT 索引的名称和列,以便正确地重新创建它们。
例如:
mysql > show create table your_table\G
*************************** 1. row ***************************
Table: your_table
Create Table: CREATE TABLE `your_table` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`col1` varchar(255) DEFAULT NULL,
`col2` varchar(255) DEFAULT NULL,
...
PRIMARY KEY (`id`),
FULLTEXT KEY `fti_idx` (`col1`,`col2`)
) ENGINE=InnoDB;
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
然后您可以在单个语句中删除和添加索引ALTER TABLE:
alter table your_table
drop index fti_idx,
add fulltext index fti_idx (col1,col2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7149 次 |
| 最近记录: |