【问题标题】:Slow InfiniDB queries, what am I doing wrong?缓慢的 InfiniDB 查询,我做错了什么?
【发布时间】:2013-12-18 13:36:27
【问题描述】:

我正在测试 InfiniDB 社区版,看看它是否适合我们的需要。 我在一个表中导入了大约 1000 万行(数据加载速度非常快),我正在尝试对其进行一些查询,但这些是结果(使用非缓存查询..如果 InfiniDB 中存在查询缓存) :

查询 1(非常快):

select * from mytable limit 150000,1000
1000 rows in set (0.04 sec)

查询 2(立即):

select count(*) from mytable;
+----------+
| count(*) |
+----------+
|  9429378 |
+----------+
1 row in set (0.00 sec)

好吧,这似乎是惊人的快.. 但是:

查询 3:

 select count(title) from mytable;
 .. still going after several minutes

查询 4:

select id from mytable where id like '%ABCD%';

+------------+
| id         |
+------------+
| ABCD       |
+------------+
1 row in set (11 min 17.30 sec)

我一定是做错了什么,用这么简单的查询不可能以这种方式执行。有什么想法吗?

【问题讨论】:

  • 您在titleid 字段上有索引吗?
  • 根据 InfiniDB 文档,说:“不需要索引:由于 InfiniDB 透明地使用垂直和逻辑水平分区,所以不需要索引。”
  • 我想您可能会发现 ID 不可为空,而标题是,并且您的查询正在计算空值而不是空值以计算结果,这种事情将通过索引来修复,因此使用 em,但由于 infini 不使用 em,因此很有可能试图找出它是否为 null,您是否尝试过 select count(title) where title is not null ????
  • 我按照你说的做了,结果是:集合中的 1 行(11 分 37.74 秒),我认为这点不在空值上。我还考虑了硬件限制,但处理器在整个时间内保持在 10%,磁盘保持读取 @120Mb/s ..并且重复 2 次相同的查询需要相同的时间。真正让我担心的是,准时访问单个记录需要花费大量时间。

标签: mysql sql infinidb


【解决方案1】:

这不应该是这样,似乎确实发生了一些奇怪的事情,请参阅下面的快速测试。

您的服务器配置是什么:内存/操作系统/CPU 和平台(专用、虚拟、云)。
我可以获取模式声明和加载数据的方法吗?

您使用的是哪个版本?版本 4 社区比以前的版本有更多的功能,即核心语法匹配企业。

干杯, 吉姆·T

mysql> insert into mytable select a, a from (select hex(rand() * 100000) a from lineitem limit 10000000) b;
Query OK, 10000000 rows affected (1 min 54.12 sec)
Records: 10000000  Duplicates: 0  Warnings: 0


mysql> desc mytable;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | varchar(32) | YES  |     | NULL    |       |
| title | varchar(32) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

mysql> select * from mytable limit 150000,1000;
+-------+-------+
| id    | title |
+-------+-------+
| E81   | E81   |
| 746A  | 746A  |
. . . 
| DFC8  | DFC8  |
| 2C56  | 2C56  |
+-------+-------+
1000 rows in set (0.07 sec)

mysql> select count(*) from mytable;
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
1 row in set (0.06 sec)

mysql> select count(title) from mytable;
+--------------+
| count(title) |
+--------------+
|      10000000 |
+--------------+
1 row in set (0.09 sec)

mysql> select id from mytable where id like '%ABCD%' limit 1;
+------+
| id   |
+------+
| ABCD |
+------+
1 row in set (0.03 sec)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-17
    • 2023-04-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2013-05-11
    相关资源
    最近更新 更多