[ОТВЕТИТЬ]
Опции темы
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Кб на строку и в сумме - гигабайт (ну за плюсом - номер строки). Пишу на бегу, поэтому интересно, как на самом деле.
 
"Спасибо" OlegON от:
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, время: 03:33.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.