В чем разница между CREATE TABLE и CREATE COLUMN TABLE в SAP HANA - PullRequest
0 голосов
/ 06 мая 2020

Примерно так, как указано в заголовке: В чем разница между CREATE TABLE и CREATE COLUMN TABLE?

Казалось бы, оба создают таблицу, так в чем разница?

1 Ответ

4 голосов
/ 07 мая 2020

SAP HANA поддерживает таблицы, которые хранят данные в хранилище столбцов или хранилище строк .

Они относятся к различным способам управления базой данных (HANA) данные, хранящиеся в таблицах. Они не вообще не влияют на то, как данные могут использоваться в операторе SQL.

Технически синтаксис для CREATE TABLE в HANA был расширен, чтобы включить способ выбора, какой из двух типов таблиц должны быть созданы:

CREATE [COLUMN|ROW] TABLE <table_name> ...

Это означает, что можно (и, вероятно, следует) включить желаемый тип таблицы в любую команду CREATE TABLE, но также можно выбрать не делайте этого (т.е. чтобы сохранить совместимость, стандарт SQL).

Настройка по умолчанию

Теперь, какой тип таблицы вы получите, когда не , указав тип таблицы, зависит для параметра HANA в файле конфигурации indexserver.ini. Если для параметра [sql] - [default_table_type] установлено значение row, то без указания типа таблицы будет получена таблица, хранящаяся в хранилище строк. Это также значение по умолчанию для параметра до HANA 2 SPS 03, если я не ошибаюсь.

В HANA 2 SPS 04 значение по умолчанию для параметра было окончательно изменено на column.

Что следует использовать

Это важно: с SAP HANA вы хотите тип таблицы COLUMN почти во всех случаях.

Таблицы хранилища строк имеют очень разные характеристики производительности и требований к памяти и в действительности служат только очень специфическим c шаблонам доступа к данным и их модификации. Вот эти шаблоны, например:

  • всегда полный доступ к строке путем выбора полного первичного ключа.
  • высокая частота UPDATE с для записей (подумайте об обновлении одна и та же запись тысячи раз в секунду).
  • записей с почти разными записями в каждом / большинстве столбцов, которые абсолютно должны постоянно находиться в памяти.

Для подавляющее большинство всех вариантов использования и типов данных CREATE COLUMN TABLE - это правильный выбор в SAP HANA. Таблицы хранилища столбцов поддерживают сжатие, разбиение на разделы, смещение памяти и многие другие методы, которые недоступны для таблиц хранилища строк.

Отличия, которые это делает для ваших программ

И все же, оба типа таблиц » выглядеть и чувствовать "одинаково с любой командой SQL. Чтобы провести аналогию, другие СУБД поддерживают различные типы таблиц, такие как «кластер» или «куча», которые влияют на то, как данные хранятся внутри, в то время как таблицы могут использоваться независимо от выбранного типа. Настройка HANA для хранилища столбцов или строк аналогична выбору внутренней памяти.

Все это (и многое другое), конечно, задокументировано (например, здесь ) и объяснено во многих разных местах. (например, моя книга Администрирование SAP HANA ).

О каком хранилище столбцов и строк не говорится

Обратите внимание, что выбор между хранилищем столбцов или строк не имеет ничего общего с тем, таблица представляет собой временную или постоянную таблицу. Оба типа таблиц постоянно сохраняют данные, как и следовало ожидать.

Конечно, всегда можно использовать CREATE TEMPORARY TABLE, который также имеет целый ряд опций ... CREATE TEMPORARY { ROW | COLUMN } TABLE | LOCAL TEMPORARY { ROW | COLUMN } TABLE, но для этого ответа давайте представим, что мы не видел этого, чтобы спасти наше здравомыслие.

Уберите

Очень важно понимать, что HANA имеет эти две принципиально разные реализации таблиц в памяти. Убедитесь, что вы случайно (используя значение по умолчанию) не создаете таблицы хранилища строк для анализа массовых данных или действительно для большинства случаев использования. Если вы не уверены в типе таблицы, начните с таблицы хранения столбец и посмотрите, подходит ли это для вашего варианта использования. Если у вас действительно есть вариант использования, для которого хранилище строк является лучшим вариантом, вы можете (почти) всегда преобразовать таблицу из одного типа хранилища в другой с помощью команды ALTER TABLE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...