так
Scoffer: ↑
11.09.2025 09:21Де строка займає рівно стільки байтів, скільки треба для зберігання типів даних цієї строки. Ні байтом більше, ні байтом менше
плюс службова інформація, яка займає досить місця, навіть якщо fillfactor = 100
якщо почати оновлювати - пухне дуже швидко
Scoffer: ↑
11.09.2025 09:21При цьому RDMS ніколи(!) не працює з даними з диску напряму, а спочатку підвантажує їх з гранулярністю в сторінку в оперативу
так, навіть якщо потрібно 1 байт даних. Тому якщо доступ до даних випадковий - то читати треба багато, і часто краще просканувати всю таблицю ніж доступатись по індексу - оптимізатор так часто і робить, але люди дивуються чому обраний Sequential Scan план виконання
Scoffer: ↑
11.09.2025 09:21Якщо треба менше читати з диску ціною того що складніше оновлювати? Ноу проблем, береш колоночну бд
але воно не буде менше читати. Бо якщо рядок даних у випадку Постгре - читався один раз - бо всі значення на одній сторінці даних, то тепер треба зачитати значення для 5-ти колонок того самого рядки з різних місць
ви впевнені що наприклад дійсні числа в бінарному форматі гарно стискаються?
плюс якщо дані пожаті - то значно сповільнюється робота з ними
я використовую також зжимання - але лише для текстових даних - і там ще багато умов та оптимізацій, і не все так просто
брав, використовував і тестував. Повільно, займає багато місця на диску, пухне під час оновлень.
Виклик - як до сервіса (до іншого процесу) - повільний - мало запитів / сек
звичайно що можна маштабувати на більше серверів - але це дуже здорожчує ціну, а за оренду потрібно платити щомісяця
а можна як я - один раз витратити трішки часу (грошей) і воно буде працювати швидко і не вимагатиме потужного заліза
Scoffer: ↑
11.09.2025 09:21 Судячи з твоїх слів ти просто повторив індекс умовного постгре, котрий чомусь у тебе в сто тишь раз швидше працює. Ага, зараз.

індекс - це як мінімум дерево B-tree. Гілки дерева зберігаються по сторінкам, доступ до них - теж має проблему random read
в мене зовсім інші структури - оптимізовані для мінімізації читання = вирішують проблему random read
Scoffer: ↑
11.09.2025 09:21Якщо треба щоб дані знаходились в пам'яті до того як пройшов запит по ним то береш інмеморі бд і налаштовуєш одну з багатьох стратегій префетча і політику вивільнення з пам'яті якщо її не вистачає. А можна і поєднати, є RDMS котрі одночасно колоночні і інмеморі
це погано, тому що ви налаштовуєте на певний стан сервера, але він постійно міняється - в якийсь момент не загружений є багато вільної оперативки, в інший - дуже загружений, і обєми які можна використати під кеші - сильно менші
проблема готових рішень - що вони не можуть динамічно говорити один з одним і домовлятись хто зараз важливіший кому дати більше дискового кешу
я вирішую це питання - не скажу як, але на систему і інші сервіси - я не впливаю
звожу задачу random read до linear read
Відправлено через 1 хвилину 38 секунд:
а ви в змозі осмислити що одно-потік у М4 на 50% швидший за одно-потік у останього проца від АМД?
ви знаєете за покоління на скільки зростає швидкість одно-потоку?
скільки потрібно поколінь щоб стало +50% ?