l******0 发帖数: 244 | 1 我有三个表,Term, Category, Category_Term, 多对多关系,很简单,Term 和
Category 只有 ID and Name 两个字段,Category_Term 是 intersection table, 存
储对应 Term and Category ID 的外部键。
使用 Load Data Local Infile,前两个表的 load 速度还比较快,5 百万的记录也就
几分钟导进去了。但是 Category_Term 出奇的慢,3 三百万的记录,几个小时才完。
数据库为 MariaDB (MySql), Linux.
难道向库中导数据的速度,跟表的结构有关。即使如此,也不应该这么慢。这可能是什
么原因? |
d******e 发帖数: 2265 | 2 foreign key要建立index.
你去check以下。
【在 l******0 的大作中提到】 : 我有三个表,Term, Category, Category_Term, 多对多关系,很简单,Term 和 : Category 只有 ID and Name 两个字段,Category_Term 是 intersection table, 存 : 储对应 Term and Category ID 的外部键。 : 使用 Load Data Local Infile,前两个表的 load 速度还比较快,5 百万的记录也就 : 几分钟导进去了。但是 Category_Term 出奇的慢,3 三百万的记录,几个小时才完。 : 数据库为 MariaDB (MySql), Linux. : 难道向库中导数据的速度,跟表的结构有关。即使如此,也不应该这么慢。这可能是什 : 么原因?
|
l******0 发帖数: 244 | 3 怎么 check? 这是 Hibernate 生成表的 sql:
【在 d******e 的大作中提到】 : foreign key要建立index. : 你去check以下。
|
l******0 发帖数: 244 | 4 How can it be so slow?
【在 l******0 的大作中提到】 : 怎么 check? 这是 Hibernate 生成表的 sql:
|
a*******s 发帖数: 324 | 5 1.create table without index,
2.loading
3.add index
【在 l******0 的大作中提到】 : How can it be so slow?
|
h**********c 发帖数: 4120 | 6 没有人知道为什么慢
如果说科学方法的话
1. 装一个mysql monitor,mysql自己就有一个分析performance的命令行工具。
2 自己建立一套表单,往里面放东西,看和1在工具里不同在哪里
如果你不画er diagram,you will get LOST given several tables.
【在 l******0 的大作中提到】 : 我有三个表,Term, Category, Category_Term, 多对多关系,很简单,Term 和 : Category 只有 ID and Name 两个字段,Category_Term 是 intersection table, 存 : 储对应 Term and Category ID 的外部键。 : 使用 Load Data Local Infile,前两个表的 load 速度还比较快,5 百万的记录也就 : 几分钟导进去了。但是 Category_Term 出奇的慢,3 三百万的记录,几个小时才完。 : 数据库为 MariaDB (MySql), Linux. : 难道向库中导数据的速度,跟表的结构有关。即使如此,也不应该这么慢。这可能是什 : 么原因?
|
l******0 发帖数: 244 | 7 Thanks. Will try.
【在 a*******s 的大作中提到】 : 1.create table without index, : 2.loading : 3.add index
|
l******0 发帖数: 244 | 8 关键另两个表也都有 ID, Name 的索引,但速度很正常,同样的数据量,几分钟的事
。这个 join table, 则需要几个小时。That is what I am curious about, and
maybe something I am doing wrong.
【在 h**********c 的大作中提到】 : 没有人知道为什么慢 : 如果说科学方法的话 : 1. 装一个mysql monitor,mysql自己就有一个分析performance的命令行工具。 : 2 自己建立一套表单,往里面放东西,看和1在工具里不同在哪里 : 如果你不画er diagram,you will get LOST given several tables.
|
T*******x 发帖数: 8565 | 9 他说的应该是对的。
【在 l******0 的大作中提到】 : Thanks. Will try.
|
h**********c 发帖数: 4120 | 10 灵异的地方就是hibernate生成的表是什么样的。
还有你的joined 的表有没有anomoly
设一个表没有外键倒入应该快,但是alter table的时候有anomoly是什么样情况。这个
要是mysql team在这里,偶就不乱讲了。
你这个us很好。 |
l******0 发帖数: 244 | 11 怎么测试表里面是不是有 anomoly?
【在 h**********c 的大作中提到】 : 灵异的地方就是hibernate生成的表是什么样的。 : 还有你的joined 的表有没有anomoly : 设一个表没有外键倒入应该快,但是alter table的时候有anomoly是什么样情况。这个 : 要是mysql team在这里,偶就不乱讲了。 : 你这个us很好。
|
c*********e 发帖数: 16335 | 12 foreign key搞的鬼。
【在 l******0 的大作中提到】 : 我有三个表,Term, Category, Category_Term, 多对多关系,很简单,Term 和 : Category 只有 ID and Name 两个字段,Category_Term 是 intersection table, 存 : 储对应 Term and Category ID 的外部键。 : 使用 Load Data Local Infile,前两个表的 load 速度还比较快,5 百万的记录也就 : 几分钟导进去了。但是 Category_Term 出奇的慢,3 三百万的记录,几个小时才完。 : 数据库为 MariaDB (MySql), Linux. : 难道向库中导数据的速度,跟表的结构有关。即使如此,也不应该这么慢。这可能是什 : 么原因?
|
d******e 发帖数: 2265 | 13 这个想逗不用想。
你associte table不上foreign key的index.
准备seq scan那张表啊。
【在 c*********e 的大作中提到】 : foreign key搞的鬼。
|
c**p 发帖数: 197 | 14 Remove primary key/key/foreign key from mapping table and test the
performance, make sure no issue in storage. Then add those keys back one by
one to identify the issue. |