Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wpływ zdefiniowania kolumny VARCHAR2 o większej długości

Odpowiedź zależy od tego, czy mówisz o kolumnie w tabeli bazy danych, czy zmiennej w programie PL/SQL.

Kolumna bazy danych

Ilość używanej pamięci jest proporcjonalna do rozmiaru przechowywanych danych.

Zmienna PL/SQL

Jeśli zmienna jest zadeklarowana z rozmiarem od 1 do 4000 (11g+) / 1999 (10g lub wcześniej), pamięć zostanie przydzielona na maksymalną długość (tj. VARCHAR2(100) będzie wymagał co najmniej 100 bajtów pamięci).

Jeśli zmienna jest zadeklarowana w rozmiarze 4001 (11g+) / 2000 (10g lub starszym) lub większym, pamięć zostanie przydzielona zgodnie z rozmiarem przechowywanych danych. (ciekawe pytanie poboczne mogłoby brzmieć, jeśli zmieni się wartość zmiennej, w jaki sposób zmieni się rozmiar pamięci - czy przydzieli inny bufor z nowym rozmiarem?)

Odniesienie do 10g:Typy danych PL/SQL

Małe zmienne VARCHAR2 są zoptymalizowane pod kątem wydajności, a większe są zoptymalizowane pod kątem efektywnego wykorzystania pamięci. Punkt odcięcia to 2000 bajtów. W przypadku VARCHAR2, który ma 2000 bajtów lub więcej, PL/SQL dynamicznie przydziela tylko tyle pamięci, aby pomieścić rzeczywistą wartość. W przypadku zmiennej VARCHAR2, która jest krótsza niż 2000 bajtów, PL/SQL wstępnie przydziela pełną zadeklarowaną długość zmiennej. Na przykład, jeśli przypiszesz tę samą 500-bajtową wartość do zmiennej VARCHAR2(2000 BYTE) i do zmiennej VARCHAR2(1999 BYTE), ta pierwsza zajmie 500 bajtów, a druga 1999 bajtów.

Odniesienie do 11g:Unikanie narzutu pamięci w kodzie PL/SQL

Określ rozmiar więcej ponad 4000 znaków dla zmiennej VARCHAR2; PL/SQL czeka, aż przypiszesz zmienną, a następnie alokuje tylko tyle miejsca, ile potrzeba



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nowe terminy bezpłatnych egzaminów certyfikacyjnych w Oracle Cloud i Autonomous Database

  2. Jak dynamicznie przekazywać wartości do operatora IN?

  3. Duży plik .patch_storage

  4. Jak sprawdzić wartości parametrów NLS w bazie danych Oracle

  5. Określanie dat Wielkanocy na dowolny rok w Oracle PLSQL