Oracle
 sql >> база данни >  >> RDS >> Oracle

Въздействие от дефинирането на колона VARCHAR2 с по-голяма дължина

Отговорът зависи от това дали говорите за колона в таблица на база данни или променлива в PL/SQL програма.

Колона на базата данни

Използваното количество памет е пропорционално на размера на съхраняваните данни.

PL/SQL променлива

Ако променливата е декларирана с размер от 1 до 4000 (11g+) / 1999 (10g или по-рано), паметта ще бъде разпределена за максималната дължина (т.е. VARCHAR2(100) ще изисква поне 100 байта памет).

Ако променливата е декларирана с размер 4001 (11g+) / 2000 (10g или по-ранен) или по-голям, паметта ще бъде разпределена според размера на съхраняваните данни. (интересен страничен въпрос би бил, ако стойността на променливата се промени, как се преоразмерява паметта - преразпределя ли друг буфер с новия размер?)

Справка за 10g:PL/SQL типове данни

Малките VARCHAR2 променливи са оптимизирани за производителност, а по-големите са оптимизирани за ефективно използване на паметта. Точката на прекъсване е 2000 байта. За VARCHAR2, който е 2000 байта или повече, PL/SQL динамично разпределя само достатъчно памет, за да задържи действителната стойност. За променлива VARCHAR2, която е по-къса от 2000 байта, PL/SQL предварително разпределя пълната декларирана дължина на променливата. Например, ако присвоите една и съща стойност от 500 байта на променлива VARCHAR2(2000 BYTE) и на променлива VARCHAR2(1999 BYTE), първата заема 500 байта, а втората – 1999 байта.

Справка за 11g:Избягване на излишните разходи за памет в PL/SQL код

Посочете размер още над 4000 знака за променливата VARCHAR2; PL/SQL изчаква, докато присвоите променливата, след което разпределя само толкова място за съхранение, колкото е необходимо



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle към Excel - процедура за експортиране на PL/SQL

  2. Отпадане на свързани потребители в базата данни на Oracle

  3. Конфигуриране на слушател в Oracle Database (издания 12c, 18c и 19c)

  4. FROM_TZ() Функция в Oracle

  5. Oracle има ли еквивалент на табличните променливи на SQL Server?