16.09.2013 14:30
OlegON
 
Иногда требуется набить чем-то базу, причем простое расширение файлов подходит не всегда. Вот пример создания большой, набитой таблички.
Код:
execute dbms_random.seed(0);
create table ok_test tablespace users
as
with generator as (
select rownum id
from dual
connect by
rownum <= 100000
)
select
rownum id,
dbms_random.string('p',2000) a,
dbms_random.string('p',2000) b,
dbms_random.string('p',2000) c,
dbms_random.string('p',2000) d,
dbms_random.string('p',2000) e
from
generator;
если кому-то не влом потестить и сказать, сколько она при этом занимает - отпишитесь, пожалуйста. Теоретически - 10Кб на строку и в сумме - гигабайт (ну за плюсом - номер строки). Пишу на бегу, поэтому интересно, как на самом деле.
25.09.2013 17:12
bayan
 
Делать было вечером, делать было нечего:
Код:
SQL>>SELECT Segment_Name,
  2         SUM(Bytes / 1024 / 1024) MBytes
  3  FROM   DBA_Extents
  4  WHERE  UPPER(Segment_Name) = 'OK_TEST'
  5  GROUP BY Segment_Name;

SEGMENT_NAME                                                                          MBYTES
--------------------------------------------------------------------------------- ----------
OK_TEST                                                                                 1124
Заполняет достаточно долго:
Код:
SQL>>create table repadmin.ok_test
  2  as
  3  with generator as (
  4  select rownum id
  5  from dual
  6  connect by
  7  rownum <= 100000
  8  )
  9  select
 10  rownum id,
 11  dbms_random.string('p',2000) a,
 12  dbms_random.string('p',2000) b,
 13  dbms_random.string('p',2000) c,
 14  dbms_random.string('p',2000) d,
 15  dbms_random.string('p',2000) e
 16  from
 17  generator;

Table created.

Elapsed: 00:21:37.66
Штука интересная, буду пользовать
25.09.2013 17:58
OlegON
 
Медленновато :( Надо попробовать 2000 поувеличивать и погонять, скорость сравнить. Я просто для точного расчета оставил маленькие значения.
21.02.2015 17:02
OlegON
 
караул, как оно проц-то ест... А мне просто табличку сварганить, чтобы место забить надо было... Поправил на такое:
Код:
create table ok_test tablespace users nologging
as
with generator as (
select rownum id
from dual
connect by
rownum <= 5000000
)
select
rownum id,
RPAD('+',4000,'+') a
from
generator;
select sum(bytes)/1024/1024/1024 from dba_segments where segment_name='OK_TEST';
Часовой пояс GMT +3, время: 22:40.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.