Ошибка видна на рисунке ниже.Эффективно выполняя точно такой же SQL-запрос, вы получите два разных ответа здесь .
mysql> select * from BTC_USDT_binance where id >= 56057162 and id < 56057791 and bidAsk = 1 order by id asc limit 2000;
Empty set (0.00 sec)
mysql> select * from BTC_USDT_binance where id >= 56057162 and id < 56057791 and bidAsk = 1 order by id asc limit 2000;
+----------+------------------------+---------+----------+--------+-------+
| id | date | price | volume | bidAsk | reset |
+----------+------------------------+---------+----------+--------+-------+
| 56057163 | 2018-11-27 00:49:46.63 | 3848.26 | 0.201554 | | |
| 56057164 | 2018-11-27 00:49:46.63 | 3835.31 | 0 | | |
| 56057168 | 2018-11-27 00:49:47.64 | 3848.27 | 2.1 | | |
| 56057175 | 2018-11-27 00:49:48.64 | 3848.3 | 0.086733 | | |
| 56057176 | 2018-11-27 00:49:48.64 | 3848.27 | 0 | | |
| 56057177 | 2018-11-27 00:49:48.64 | 3848.31 | 0.085672 | | |
Второе изображение, чтобы продемонстрировать это:
mysql> select COUNT(*) from BTC_USDT_binance where id >= '56057162' and id < '56057791' and bidAsk = 0;
+----------+
| COUNT(*) |
+----------+
| 316 |
+----------+
1 row in set (0.00 sec)
mysql> select COUNT(*) from BTC_USDT_binance where id >= '56057162' and id < '56057791' and bidAsk = 0;
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
mysql> select COUNT(*) from BTC_USDT_binance where id >= '56057162' and id < '56057791' and bidAsk = 0;
+----------+
| COUNT(*) |
+----------+
| 316 |
+----------+
1 row in set (0.00 sec)
mysql> select COUNT(*) from BTC_USDT_binance where id >= '56057162' and id < '56057791' and bidAsk = 0;
+----------+
| COUNT(*) |
+----------+
| 1 |
+----------+
1 row in set (0.01 sec)
mysql> select COUNT(*) from BTC_USDT_binance where id >= '56057162' and id < '56057791' and bidAsk = 0;
+----------+
| COUNT(*) |
+----------+
| 316 |
+----------+
1 row in set (0.00 sec)
Примечания / Замечания по этому вопросу:
Я отключил другие соединения, не сохраняю в таблице ввсе.Это происходит последовательно друг с другом - это означает, что если я выполню его один раз, он вернет один результат (обычно большой запрос / результат из нескольких тысяч ответов), а если я сделаю запрос еще раз, он вернет другой (одну запись).
Обратите внимание, что это не связано с ограничениями пространства на первичном ключе или чем-либо связанным с этим.Схема базы данных выглядит следующим образом: здесь .
mysql> describe BTC_USDT_binance;
+--------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+----------------+
| id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| date | timestamp(2) | YES | | NULL | |
| price | float | YES | | NULL | |
| volume | float | YES | | NULL | |
| bidAsk | bit(1) | YES | | NULL | |
| reset | bit(1) | YES | | NULL | |
+--------+---------------------+------+-----+---------+----------------+
Количество хаков
Если вы ограничите количество извлекаемых записей (т. Е. Извлекаете только 100 записей одновременно),проблема уходит.Это происходит примерно до 1000 записей.Это можно легко увидеть / воспроизвести, запустив (изменяя значение N):
select * from BTC_USDT_binance where id >= 56057162 and id < 56057791 and bidAsk = 1 order by id asc limit N;
Если вместо этого вы используете только одностороннюю величину больше, чем и используете ограничение,проблема уходит также.Это видно по:
select * from BTC_USDT_binance where id >= 56057162 and bidAsk = 1 order by id asc limit 500;
Прочие сведения и примечания
Это на Amazon RDS mysql.Движок: MySQL 5.6.37 Класс экземпляра БД: db.t2.medium
Help
Если вы отправите мне сообщение или напишете ниже, я могу предоставить вам доступ к базе данных, чтобы вы могли попробовать и сыгратьвокруг с наборами данных.