2016-04-27 15 views
0

Berechnen Ich muss die Speicheranforderungen in Bezug auf die Blöcke für folgende Tabelle berechnen:ORACLE: Speicherbedarf der Tabelle in Form von Blöcken auf dem Papier

Bill(billno number(7),billdate date,ccode varchar2(20),amount number(9,2))

Die Tabellenspeicher Attribute sind:

PCTFREE = 20, INITRANS = 4, PCTUSED = 60, BLOCKSIZE = 8K, ANZAHL DER REIHEN = 100000

Ich suchte viel im Internet, bezog viele Bücher, aber bekam nichts.

Antwort

0

Zuerst müssen Sie herausfinden, was der typische Wert für varchar2 Spalte ist. Die Gesamtgröße wird davon abhängen. Ich habe 2 Tabellen aus Ihrer BILL Tabelle erstellt. BILLMAX wobei ccode immer 20 Char ('123456789') und BILLMIN dauert, die NULL in ccode immer hat. Die Ergebnisse sind:

TABLE_NAME NUM_ROWS AVG_ROW_LEN BLOCKS 
BILLMAX  3938  37   28 
BILLMIN  3938  16   13 

select table_name, num_rows, avg_row_len, blocks from user_tables 
where table_name in ('BILLMIN', 'BILLMAX') 

Wie Sie sehen können, die Anzahl der Blöcke auf, dass abhängig ist. Verwenden Sie exec dbms_stats.GATHER_TABLE_STATS('YourSchema','BILL'), um Werte in user_tables zu aktualisieren.

Die andere Sache, die Sie berücksichtigen müssen, ist, wie groß Ihre Extents sein werden. Zum Beispiel:

STORAGE (
      INITIAL   64K 
      NEXT    1M 
      MINEXTENTS  1 
      MAXEXTENTS  UNLIMITED 
      PCTINCREASE  0 
      BUFFER_POOL  DEFAULT 
      ) 

generiert die ersten 16 Extents mit 8 Blöcken Größe. Danach wird mit der Erstellung von Extents mit einer Größe von 1 MB (128 Blöcke) begonnen.

Also für BILLMAX wird es 768 Blöcke generieren und BILLMIN wird 384 Blöcke dauern. Wie Sie sehen können, ist der Unterschied ziemlich groß.

Für BILLMAX: 16 * 8 + 128 * 5 = 768

Für BILLMIN: 16 * 8 + 128 * 2 = 384

+0

Ich weiß, wie diese Informationen zu erhalten, mit 'dbms_stats.GATHER_TABLE_STATS'. Ich möchte das theoretisch berechnen. – AkaSh

+0

Der zweite Teil meiner Antwort ist dafür. Zuerst müssen Sie herausfinden, wie viele Zeilen in einen Block passen und dann die Anzahl der erforderlichen Blöcke berechnen. Dann benutze die STORAGE-Klasse, um eine Vorstellung davon zu bekommen, wie deine EXTENTS aussehen und du hast das Ergebnis. – dcieslak