【问题标题】:FullText INDEXING on MyISAM is really slowMyISAM 上的全文索引真的很慢
【发布时间】:2011-11-29 16:54:20
【问题描述】:

我有一张桌子

CREATE TABLE `dataFullText` (
`id` int(11) NOT NULL,
`title` char(255) NOT NULL,
`description` text NOT NULL,
`name` char(100) NOT NULL,
`ref` char(50) NOT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `fulltext` (`ref`,`name`,`title`,`description`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

大约有 10 万条记录。

mysql> select * from information_schema.TABLES WHERE TABLE_NAME='jobsFullText'\G
*************************** 1. row ***************************
TABLE_CATALOG: NULL
TABLE_SCHEMA: ****
TABLE_NAME: dataFullText
TABLE_TYPE: BASE TABLE
ENGINE: MyISAM
VERSION: 10
ROW_FORMAT: Dynamic
TABLE_ROWS: 79495
AVG_ROW_LENGTH: 791
DATA_LENGTH: 62938804
MAX_DATA_LENGTH: 281474976710655
INDEX_LENGTH: 53625856
DATA_FREE: 51328
AUTO_INCREMENT: NULL
CREATE_TIME: 2011-10-03 13:38:25
UPDATE_TIME: 2011-10-03 13:55:56
CHECK_TIME: 2011-10-03 13:38:48
TABLE_COLLATION: utf8_general_ci
CHECKSUM: NULL
CREATE_OPTIONS: 
TABLE_COMMENT: 

该表每小时更新一次,其中包含大约 8k 条记录的 LOAD DATA INFILE。

锁定表的时间约为 30 秒。这对应于我制作的时间

mysql> alter table dataFullText drop index title;
Query OK, 79495 rows affected (1.33 sec)
Records: 79495  Duplicates: 0  Warnings: 0

mysql> alter table dataFullText add fulltext index (ref,name,title,description);
Query OK, 79495 rows affected (22.96 sec)
Records: 79495  Duplicates: 0  Warnings: 0

我的问题是 30 秒真的很长。该表被查询 5 次/秒,这使得队列达到 30 x 5 = 150 。因为我们的最大连接限制设置为 100,mysql 服务器开始拒绝一些传入连接。

我们计划将来在这个表中至少有 100 万行,我想这不会变得更快。

我可以做些什么来减少 mysql 用于更新索引的时间吗?

【问题讨论】:

  • 我最终决定将 Sphinx 用于所有搜索功能。我发现它比 MySQL 快得多。我使用 MySQL 来存储和组织我的数据,并使用 Sphinx 来访问它们。 MySQL =>写入,Sphinx =>读取。

标签: mysql performance full-text-search indexing full-text-indexing


【解决方案1】:

在一般的 SQL DBMS 中,像这样完全索引表并不能帮助您。索引实际上比表本身大,访问它所花费的时间会比访问没有索引的表还要长。

现在,这实际上取决于您的特定安装:RAM 的数量、系统的整体速度。 在添加索引之前,是的,更新/重新创建索引很慢,只要确保它是值得的,在你所处的特定条件下。

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 2013-06-24
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多