Bigint Myisam的订单未订购。为什么?

发布于 2025-01-22 07:09:54 字数 6624 浏览 2 评论 0原文

我不得不使用bigint代替常规int。创建新桌子后,它不寻常。请参阅下面的详细信息。

MariaDB [user]> select * from dmn_base2 ORDER BY id DESC limit 4;
+------------+-----------------------+----------------+--------+
| id         | domain                | base           | tld_id |
+------------+-----------------------+----------------+--------+
| 1975224411 | bank-3dsecure.com     | bank-3dsecure  |      4 |
|  466015797 | bank-365.se           | bank-365       |    378 |
| 1711908528 | bank-2projects.online | bank-2projects |     20 |
|   27739599 | bank-2580.com         | bank-2580      |      4 |
+------------+-----------------------+----------------+--------+
   ^----this is unusual   

它使用索引:

MariaDB [user]> explain select * from dmn_base2 ORDER BY id DESC limit 4;
+------+-------------+-----------+-------+---------------+---------+---------+------+------+-------+
| id   | select_type | table     | type  | possible_keys | key     | key_len | ref  | rows | Extra |
+------+-------------+-----------+-------+---------------+---------+---------+------+------+-------+
|    1 | SIMPLE      | dmn_base2 | index | NULL          | PRIMARY | 8       | NULL |    4 |       |
+------+-------------+-----------+-------+---------------+---------+---------+------+------+-------+

表的结构:

MariaDB [user]> show columns from dmn_base2;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | bigint(20)   | NO   | PRI | NULL    |       |
| domain | varchar(100) | NO   | UNI | NULL    |       |
| base   | varchar(100) | NO   | MUL | NULL    |       |
| tld_id | int(11)      | NO   | MUL | NULL    |       |
+--------+--------------+------+-----+---------+-------+


MariaDB [capturesipbee]> SHOW CREATE TABLE dmn_base2;
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table     | Create Table                                                                                                                                                                                                                                                                                                                                                                                            |
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dmn_base2 | CREATE TABLE `dmn_base2` (
  `id` bigint(20) NOT NULL,
  `domain` varchar(100) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
  `base` varchar(100) COLLATE utf8mb4_bin NOT NULL,
  `tld_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `domain` (`domain`),
  KEY `base` (`base`),
  KEY `tld_id` (`tld_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC |
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

索引:

MariaDB [user]> show indexes from dmn_base2;
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

| Table     | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| dmn_base2 |          0 | PRIMARY  |            1 | id          | A         |   460592774 |     NULL | NULL   |      | BTREE      |         |               |
| dmn_base2 |          0 | domain   |            1 | domain      | A         |   460592774 |     NULL | NULL   |      | BTREE      |         |               |
| dmn_base2 |          1 | base     |            1 | base        | A         |   460592774 |     NULL | NULL   |      | BTREE      |         |               |
| dmn_base2 |          1 | tld_id   |            1 | tld_id      | A         |        1967 |     NULL | NULL   |      | BTREE      |         |               |
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

查询未完成,杀死5小时后没有效果

+------+-------+-----------+----+---------+-------+--------------+-----------------------------------------------------------+----------+
| Id   | User  | Host      | db | Command | Time  | State        | Info                                                      | Progress |
+------+-------+-----------+----+---------+-------+--------------+-----------------------------------------------------------+----------+
|   36 | root  | localhost | db | Killed  | 21107 | Sending data | select * from dmn_base2 ORDER BY id DESC limit 5          |    0.000 |

我的猜测是:损坏的索引文件?

我已将数据库复制到其他设备。相同的查询与预期一样工作。

mysql> select * from dmn_base order by id desc limit 4;
+------------+----------------------+-------------------+--------+
| id         | domain               | base              | tld_id |
+------------+----------------------+-------------------+--------+
| 2147483647 | naturleckerlies.de   | naturleckerlies   |    921 |
| 2147475178 | meinlohne.de         | meinlohne         |    921 |
| 2147471022 | mamis-zeit.de        | mamis-zeit        |    921 |
| 2147456303 | kinderpact-berlin.de | kinderpact-berlin |    921 |
+------------+----------------------+-------------------+--------+
4 rows in set (0.00 sec)

I had to use bigint instead of regular int. After creating the new table it bahaves unusual. See details below.

MariaDB [user]> select * from dmn_base2 ORDER BY id DESC limit 4;
+------------+-----------------------+----------------+--------+
| id         | domain                | base           | tld_id |
+------------+-----------------------+----------------+--------+
| 1975224411 | bank-3dsecure.com     | bank-3dsecure  |      4 |
|  466015797 | bank-365.se           | bank-365       |    378 |
| 1711908528 | bank-2projects.online | bank-2projects |     20 |
|   27739599 | bank-2580.com         | bank-2580      |      4 |
+------------+-----------------------+----------------+--------+
   ^----this is unusual   

It uses index:

MariaDB [user]> explain select * from dmn_base2 ORDER BY id DESC limit 4;
+------+-------------+-----------+-------+---------------+---------+---------+------+------+-------+
| id   | select_type | table     | type  | possible_keys | key     | key_len | ref  | rows | Extra |
+------+-------------+-----------+-------+---------------+---------+---------+------+------+-------+
|    1 | SIMPLE      | dmn_base2 | index | NULL          | PRIMARY | 8       | NULL |    4 |       |
+------+-------------+-----------+-------+---------------+---------+---------+------+------+-------+

Structure of the table:

MariaDB [user]> show columns from dmn_base2;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| id     | bigint(20)   | NO   | PRI | NULL    |       |
| domain | varchar(100) | NO   | UNI | NULL    |       |
| base   | varchar(100) | NO   | MUL | NULL    |       |
| tld_id | int(11)      | NO   | MUL | NULL    |       |
+--------+--------------+------+-----+---------+-------+


MariaDB [capturesipbee]> SHOW CREATE TABLE dmn_base2;
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table     | Create Table                                                                                                                                                                                                                                                                                                                                                                                            |
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dmn_base2 | CREATE TABLE `dmn_base2` (
  `id` bigint(20) NOT NULL,
  `domain` varchar(100) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,
  `base` varchar(100) COLLATE utf8mb4_bin NOT NULL,
  `tld_id` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `domain` (`domain`),
  KEY `base` (`base`),
  KEY `tld_id` (`tld_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC |
+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Indexes:

MariaDB [user]> show indexes from dmn_base2;
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

| Table     | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| dmn_base2 |          0 | PRIMARY  |            1 | id          | A         |   460592774 |     NULL | NULL   |      | BTREE      |         |               |
| dmn_base2 |          0 | domain   |            1 | domain      | A         |   460592774 |     NULL | NULL   |      | BTREE      |         |               |
| dmn_base2 |          1 | base     |            1 | base        | A         |   460592774 |     NULL | NULL   |      | BTREE      |         |               |
| dmn_base2 |          1 | tld_id   |            1 | tld_id      | A         |        1967 |     NULL | NULL   |      | BTREE      |         |               |
+-----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

query does not finished, killing has no effect after 5 hours

+------+-------+-----------+----+---------+-------+--------------+-----------------------------------------------------------+----------+
| Id   | User  | Host      | db | Command | Time  | State        | Info                                                      | Progress |
+------+-------+-----------+----+---------+-------+--------------+-----------------------------------------------------------+----------+
|   36 | root  | localhost | db | Killed  | 21107 | Sending data | select * from dmn_base2 ORDER BY id DESC limit 5          |    0.000 |

my guess is: broken index file?

I have copied the database to other device. The same query works as expected.

mysql> select * from dmn_base order by id desc limit 4;
+------------+----------------------+-------------------+--------+
| id         | domain               | base              | tld_id |
+------------+----------------------+-------------------+--------+
| 2147483647 | naturleckerlies.de   | naturleckerlies   |    921 |
| 2147475178 | meinlohne.de         | meinlohne         |    921 |
| 2147471022 | mamis-zeit.de        | mamis-zeit        |    921 |
| 2147456303 | kinderpact-berlin.de | kinderpact-berlin |    921 |
+------------+----------------------+-------------------+--------+
4 rows in set (0.00 sec)

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

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

发布评论

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

评论(1

月朦胧 2025-01-29 07:09:54

我不得不更新Mariadb。 (10.1-> 10-6)

当我使用plesk时,我指的是此文章:

I had to update MariaDB. (10.1->10-6)

As I use Plesk I refer to this articles:

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