MYISAM表插入速度慢

发布于 2024-12-06 10:50:39 字数 543 浏览 1 评论 0原文

我需要创建一个包含两个属性的表:idauthor。这两个属性形成复合键。此外,我需要对 author 字段执行索引搜索。 因此,我使用以下语句创建表:

CREATE TABLE IF NOT EXISTSauthors (author VARCHAR(100) NOT NULL, id VARCHAR(200) NOT NULL, INDEX USING BTREE(author,id), PRIMARY KEY (author,id))引擎=MYISAM;

现在,当我尝试使用 JDBC 插入大约 450 万条记录时,最后插入速度变得非常慢。 id 属性指的是相关作者创建的出版物。一位作者与多个 ID 相关,反之亦然。相同 id 值的平均数量低于相同author 值的数量。 因此,我使用交换的属性测试了相同的过程。在这种情况下,插入速度几乎保持恒定。 有没有办法优化表以获得性能? 我不太清楚 MYISAM 如何管理索引组合键。可能是平衡过程的原因...

提前致谢!

I need to create a table containing two attributes: id and author. These two attributes form the composite key. Moreover I need to perform an index search on the author field.
Therefore I create the table using the following statement:

CREATE TABLE IF NOT EXISTS authors (author VARCHAR(100) NOT NULL, id VARCHAR(200) NOT NULL, INDEX USING BTREE(author,id), PRIMARY KEY (author,id)) ENGINE=MYISAM;

Now, I when try to insert about 4.5 million records using JDBC, the insertion speed gets terribly slow at the end.
The id attribute refers to a publication which was created by the related author. One author is related to several ids and vice versa. The average number of identical id values is lower than the number of identical author values.
Therefore I tested the same procedure with swapped attributes. In this case, the insertion speed remains nearly constant.
Is there a way to optimize the table in order to gain performance?
I don't quite know how MYISAM manages indexing composite keys. May be the process of balancing is the reason...

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

从此见与不见 2024-12-13 10:50:39

我注意到一些问题:

  • 您在同一对列(author、id)上定义两个索引:一个普通索引和一个主键,主键也是一种特殊类型的唯一索引。
  • 索引位于非常长的 VARCHAR 值上。
  • 您的数据库不是第一范式,因为正如您所说,作者可以重复,您使用完整的作者姓名来创建关系,而您应该使用 id 并将作者放在单独的表中。

在这些更改之后,您的索引将位于简单的数字类型上,并且插入速度应该很好。

I notice a few problems:

  • you're defining two indexes on the same couple of columns (author, id): a normal index and a primary key which is also a special type of unique index.
  • the indexes are on very long VARCHAR values.
  • your database is not in first normal form, because as you said the author can be repeated, you're using the full author name to create a relationship, while you should use an id and put authors in a separate table.

After these changes, your index will be on simple numeric types and your insert speed should be good.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文