База данных содержит всего 2 таблицы:
- кошелек (1 миллион строк)
- транзакция (15 миллионов строк)
CockroachDB 19.2.6 работает на 3-х машинах Ubuntu
- 2vCPU на каждом
- 8 ГБ ОЗУ на каждом
- Docker контейнер роя
vs
SQL Сервер 2019 работает на 1 машине Windows Сервер 2019
Здесь это запрос
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 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