Оптимизация производительности Netezza - PullRequest
0 голосов
/ 19 октября 2018

Я начинаю работать с Netezza на Aginity для обработки миллионов записей на таблицу.Я читал в Интернете о том, как оптимизировать таблицы, чтобы загрузка данных и выполнение запросов к ним были относительно быстрыми, и у меня есть несколько вопросов.

1) Одна вещь, которую ячиталось, что распределение, которое вы выбираете при создании таблицы, будет влиять на то, насколько быстро вы можете запросить таблицу.По большей части, лучше ли распространять по первичному ключу?И скажем, нет первичных ключей, но вместо этого есть внешние ключи в таблице, хорошо ли распределять по обоим внешним ключам или только по одному?

2) Я читал о том, какв котором вы можете увидеть перекос вашей таблицы (который, я думаю, основан на вашем дистрибутиве), выполнив этот запрос:

SELECT count(*), datasliceid from SCHEMA.TableName group by datascliceid ordery by datasliceid

Итак, при этом я заметил, что минимальное количество данных на datasliceidбыл 21 530, а максимальный был 22 456.Есть 240 данных, которые были возвращены.Это хорошо или данные должны распределяться намного более равномерно?

3) И последнее, но не менее важное: я пытаюсь запустить:

generate statistics on SCHEMA.TABLENAME

внутриAginity, но когда я это делаю, я просто получаю сообщение The command completed successfully, но ничего не появляется.Как мне просмотреть эту информацию?

1 Ответ

0 голосов
/ 22 октября 2018

Я попробую: 1) беспокоиться только о распределении для ДЕЙСТВИТЕЛЬНО больших таблиц (используйте RANDOM для всех маленьких / средних таблиц). Кроме того: распространяйте только по одному столбцу, и только если вы присоединяетесь к нему.ЛОТ 2), что распределение в не перекос на мой взгляд.Не беспокойся3) когда вы обновляете статистику в базе данных, оптимизатор базы данных, прежде всего, делает лучший выбор, когда вы запускаете (сложный) sql против нее.Однако вы можете прочитать эту информацию из таблиц каталога позже.Запросы на это можно найти в Интернете:)

...