Уровень параллелизма VARRAY и вложенных таблиц

Я хотел бы знать, что будет иметь лучший уровень параллелизма, VARRAY или вложенные таблицы. Действительно ли VARRAY нужна только одна операция ввода/вывода для загрузки коллекции?

Это для систем бронирования.

С уважением,


person llinasenc    schedule 09.10.2019    source источник
comment
Вы можете получить более подробный ответ, если объясните, что вы имеете в виду, когда спрашиваете об уровне параллелизма, поскольку большинство баз данных (включая Oracle) имеют свойства ACID, что означает, что существует атомарность в транзакциях. Когда вы спрашиваете об операциях ввода-вывода, вы спрашиваете на уровне транзакций (т. е. операторов DML) или вы спрашиваете о дисковом вводе-выводе?   -  person MT0    schedule 09.10.2019
comment
Привет, я спрашиваю об уровне транзакции. Извините за недостаточно ясность.   -  person llinasenc    schedule 09.10.2019


Ответы (1)


Действительно ли VARRAY нужна только одна операция ввода/вывода для загрузки коллекции?

Определите VARRAY и тип коллекции:

CREATE TYPE test_varray AS VARRAY(3) OF NUMBER;
CREATE TYPE test_collection AS TABLE OF NUMBER;

Затем вы можете создать аналогичные таблицы для каждого из этих типов данных:

CREATE TABLE test1 (
  id    NUMBER PRIMARY KEY,
  array test_varray
);

CREATE TABLE test2 (
  id    NUMBER PRIMARY KEY,
  array test_collection
) NESTED TABLE array STORE AS test2__array;

Вы можете INSERT в эти таблицы как один оператор:

INSERT INTO test1 ( id, array ) VALUES ( 1, test_varray( 1.1, 1.2, 1.3 ) );
INSERT INTO test2 ( id, array ) VALUES ( 1, test_collection( 1.1, 1.2, 1.3 ) );

Вы можете SELECT из этих таблиц как один оператор:

SELECT id, column_value FROM test1 CROSS JOIN TABLE( array );
SELECT id, column_value FROM test2 CROSS JOIN TABLE( array );

Которые оба выводят:

ID | COLUMN_VALUE
-: | -----------:
 1 |          1.1
 1 |          1.2
 1 |          1.3

db‹>скрипка здесь

Так что с точки зрения INSERT/SELECT операций они функционально схожи. Документация Oracle — Понимание типов коллекций PL/SQL в основном объясняет некоторые различия:

  • VARRAY имеет ограниченное количество элементов и всегда плотно.
  • Коллекции (вложенные таблицы) могут иметь неограниченное количество элементов и могут быть разреженными.
person MT0    schedule 09.10.2019