останавливает низкое кол-во запросов в секунду. Может есть какие-то способы увеличить rps для простых запросов вроде SELECT col1,col2,col3 FROM table WHERE id=123456 ?
кликхаус не для точечных запросов в принципе
https://altinity.com/blog/clickhouse-in-the-storm-part-2 Но строго говоря ТОЛЬКО для таких запросов кх не подходит
у таблицы ORDER BY id ? у тебя тут проблема в том что не работает partition prunning и получается full scan по primary key и для каждого парта приходится делать o(log n) поиск с точностью до гранулы где твой id лежит потом читать гранулу... чем больше партов, тем медленнее потому что получается P * o (log n(p)) и я не уверен. но оно не в паралели ищет (хотя наверное могло бы?)
то есть при самых идеальных условиях читаться будет с диска минимум один сжатый блок записей (65535 строк) если не ошибаюсь... и потом фильтроваться...
не знаю ваших бюджетов, но если это прям критично, думаю, можно попробовать закупиться оперативкой и выгрузить данные в memory table ) https://clickhouse.com/docs/en/engines/table-engines/special/memory/ "Normally, using this table engine is not justified. However, it can be used for tests, and for tasks where maximum speed is required on a relatively small number of rows (up to approximately 100,000,000)."
возможно словарь побыстрее, там в хэш таблице хранится. А в Memory engine ключ не задаётся, подразумевается что фулскан будет всегда
Обсуждают сегодня