2016-12-03 5 views
0

У меня есть большой стол в Netezza, а размер стола составляет около 600 ГБ. Когда я попытался создать новую таблицу из существующей таблицы, размер таблицы увеличился. Размер нового стола - 617 ГБ.Размер таблицы Netezza увеличился после использования команды CTAS

SQL, который я использовал для создания новой таблицы: create table new_table_name как select * from old_table_name distribution on (column_name); генерировать статистику по new_table_name; Однако количество строк для новой таблицы и старой таблицы одинаково.

В чем может быть причина увеличения размера стола?

Заранее спасибо.

+0

Является ли дистрибуция 'old_table_name' также на' column_name'? –

+0

№. В старой таблице у нас нет ключа распределения. – Amlan

+0

И когда вы говорите «размер стола», вы имеете в виду пробел или выделенное пространство? –

ответ

0

Есть два соответствующих измерений для «размера» таблицы: выделено и использован размером (как в байтах) _v_table_storage_stat поможет вам взглянуть на оба размерах для данной таблицы

Для маленьких таблиц, выделенного размера может быть во много раз больше используемого размера и при условии равномерного распределения строк на каждый срез данных будет выделяться минимум 3 МБ. Я выполняю большую часть своей работы в системе с двумя стойками MAKO с 480 срезами данных. Поэтому любая таблица с меньшими затратами, чем 14,4GB более или менее не имеет значения для оптимизации размера «»

Тем не менее, я постараюсь объяснить, что вы видите: Вы должны понимать, что 1) все данные в Netezza сжаты. 2) Сжатие выполняется для «блока» данных для каждого отдельного набора данных. 3) Коэффициент сжатия (размер данных после сжатия, деленный на размер раньше) становится лучше (меньше), если данные в каждом блоке имеют много общего по сравнению с самой «смешанной» ситуацией, которую только можно себе представить. 4) «распространять» и «организовывать» может повлиять на это. То же самое можно «упорядочить» или «группу» в инструкции выбора, используемой при добавлении данных в таблицу

В моей системе у меня очень широкая таблица с несколькими «копиями» в день банка счета наших клиентов. Каждая копия на 99% идентична предыдущей, и изменяются только такие вещи, как «баланс».

Распространяясь по идентификатору accountID и организовывая на AccountID, Timestamp - я видел 10-15% меньшего размера. Некоторые срезы данных имели лучший эффект, поскольку в них было много идентификаторов учетной записи системы, которые имеют разные шаблоны в данных.

Короче: А) это совершенно естественно B) не слишком беспокоиться об этом, так как: С) а «большой» стол по системе Netezza не то же самое, как на 4-ядра базы данных с слишком мало памяти и дисков sloooow :)