|
|
|
ASA9 отчетик о приросте производительности из-за увеличения кэша
|
|||
|---|---|---|---|
|
#18+
Имеем БД ASA9.0.1(2) размер чуть больше 30 ГБ Железо: 4-х процессорный HP DL 560 (Xeon 3 GHz, Hyperthreading включен, т.е. имеем как бы 8 процов). Памяти 2 GB. ОС WIN2000 Advanced Server, под кэш выделено 1.5 GB. Имеем таблицу, в которой лежат данные по звонкам. За месяц данных примерно 7-8 GB. Общий расчет за месяц выполняется несколько часов, 5-6 примерно. Увеличиваем память до 12 GB, ставим WIN2003 Enterprise, под кэш выделяем 11 GB, тот же расчет 3 минуты !!! . Естественно при условии, что все данные уже в кэше. Прирост производительности примерно в 100 раз !!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 16:37 |
|
||
|
ASA9 отчетик о приросте производительности из-за увеличения кэша
|
|||
|---|---|---|---|
|
#18+
Ну память всегда быстрее винчестера, это и доказывать не нужно :) Хотя мне кажеться одним из главных достоинств РСУБД должна быть как раз эффективная работа с данными, не умещающимися в кэш. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 16:51 |
|
||
|
ASA9 отчетик о приросте производительности из-за увеличения кэша
|
|||
|---|---|---|---|
|
#18+
То, что у ASA проблемы при работе с большими выборками, типа пересечения двух больших таблиц - это факт. Проверено на ASA 6.04. Пример: 1)select sum(table1.x*table2.y) from table1 key join table2; Время работы >2 часов 2)select count(*) from table1; select count(*) from table2; Обе таблицы в кэше select sum(table1.x*table2.y) from table1 key join table2; Общее время работы <10 минут Table1, Table2 - 7млн и 3млн записей. Может в 9 ASA что-то изменилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2004, 21:53 |
|
||
|
ASA9 отчетик о приросте производительности из-за увеличения кэша
|
|||
|---|---|---|---|
|
#18+
Бестолку сравнивать ASA >=8 и ASA <=7 - у них абсолютно разные оптимизаторы и принципы работы. Начиная с 8-версии была введена куча алгоритмов соединений через индексамы и хэш-таблицы, аггрегатных и т.д. Даже переориентация на большое кол-во одновременно работающих сессий внесла свои коррективы в работу оптимизатора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 07:27 |
|
||
|
ASA9 отчетик о приросте производительности из-за увеличения кэша
|
|||
|---|---|---|---|
|
#18+
Мне нравится вот такой пример большая таблица, индекс по полю dt select min(dt) from table1 - влет select max(dt) from table1 - влет select max(dt), min(dt) from table1 - уходит в table scan надолго ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 11:25 |
|
||
|
ASA9 отчетик о приросте производительности из-за увеличения кэша
|
|||
|---|---|---|---|
|
#18+
VovakaМне нравится вот такой пример большая таблица, индекс по полю dt select min(dt) from table1 - влет select max(dt) from table1 - влет select max(dt), min(dt) from table1 - уходит в table scan надолго ... Ну а как бы Вы поступили на месте оптимизатора, уже изначально потребовав прямое и обратное сканирование по индексу ? Дважды сканили индекс, забирая весь доступный кэш у других сессий и дважды блокируя все записи таблицы ? Если Вы согласны на двойное сканирование, то кто мешает написать вот так: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 11:57 |
|
||
|
ASA9 отчетик о приросте производительности из-за увеличения кэша
|
|||
|---|---|---|---|
|
#18+
Ну он же должен знать, (ну в смысле у него же есть оценки), что сканирование индекса, пусть даже и два раза будет на много порядков быстрее сканирования таблицы ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 12:00 |
|
||
|
ASA9 отчетик о приросте производительности из-за увеличения кэша
|
|||
|---|---|---|---|
|
#18+
При оценке не только скорость учитывается, но и требование к ресурсам на выполнение запроса, текущий уровень изоляции, блокировки, ширина таблицы, типы существующих индексов, наличие кластерного индекса и надо думать многое другое, так как первоочередная задача РСУБД не форсированно выполнить запрос одной сессии, а держать сервер на плаву при работе множества подключений на чтение и запись. Здесь пример легко решается мною вышеуказанным методом. Для более сложных случаев в ASA не зря введен алгоритм LATERAL и другие, позволяющие проектировщику разруливать такие ситуации и неявно управлять действиями оптимизатора, без жесткого навязывания индексов. P.S. Если на такой запрос навязать индекс, то в плане запросов использование индекса будет гораздо затратнее, чем Table Scan. Обьясняется это тем, что все дерево перебрать всегда дольше, чем линейно считать таблицу. Плюс во время сканирования таблицы не востребуется кэш, что и влияет на выбор такого алгоритма. С учетом того, что алгоритм намеренно задается как "долгий" - так или иначе перебор всей таблицы, думаю в таких случаях ответственость за время и эффективность выполнение запроса несет только проектировщик БД, который и должен изначально написать "правильный" запрос, приводящий к наиболее эффективному составлению плана оптимизатором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2004, 12:50 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=32811445&tid=2014041]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 270ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...