Тот же запрос SQL, CockroachDB занимает 4 минуты SQL Сервер занимает 35 мс. Я что-то упускаю? - PullRequest
0 голосов
/ 07 мая 2020

База данных содержит всего 2 таблицы:

  • кошелек (1 миллион строк)
  • транзакция (15 миллионов строк)

CockroachDB 19.2.6 работает на 3-х машинах Ubuntu

  • 2vCPU на каждом
  • 8 ГБ ОЗУ на каждом
  • Docker контейнер роя

vs

SQL Сервер 2019 работает на 1 машине Windows Сервер 2019

  • 4vCPU
  • 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 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
...