База данных содержит всего 2 таблицы:
- кошелек (1 миллион строк)
- транзакция (15 миллионов строк)
CockroachDB 19.2.6 работает на 3 машинах с Ubuntu
- 2 ВЦП каждый
- 8 ГБ ОЗУ каждый
- Контейнер Docker Swarm
vs
SQL Server 2019 работает на 1 машине Windows Server 2019
- 4 ВЦП
- 16 ГБ ОЗУ
Вот запрос
select * from transaction t
join wallet s on t.sender_id=s.id
join wallet r on t.receiver_id=r.id
limit 10;
- Серверу SQL требуется всего 35 мс, чтобы вернуть первые 10 результатов.
- CockroachDB тратит на это 3,5-5 минут.
1) Я знаю, что инфраструктура недостаточно справедлива для CockroachDB, но, тем не менее, разница действительно слишком велика. Я что-то упускаю? или CockroachDB просто очень медленный для этого конкретного SQL-запроса?
2) Когда я выполняю этот запрос, ЦП всех 3 узлов тараканов увеличился до 100%. Это нормально?
Обновление: вот запрос "EXPLAIN". не знаю как читать..
> explain select * from transaction t
-> join wallet s on t.sender_id=s.id
-> join wallet r on t.receiver_id=r.id
-> limit 10;
tree | field | description
+---------------------+--------------------+----------------------+
| distributed | true
| vectorized | false
limit | |
│ | count | 10
└── hash-join | |
│ | type | inner
│ | equality | (receiver_id) = (id)
│ | right cols are key |
├── hash-join | |
│ │ | type | inner
│ │ | equality | (sender_id) = (id)
│ │ | right cols are key |
│ ├── scan | |
│ │ | table | transaction@primary
│ │ | spans | ALL
│ └── scan | |
│ | table | wallet@primary
│ | spans | ALL
└── scan | |
| table | wallet@primary
| spans | ALL