Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / размер таблицы (настоящий) / 9 сообщений из 9, страница 1 из 1
05.10.2018, 11:51
    #39713451
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
хочу узнать размер таблицы


Код: plsql
1.
2.
3.
4.
5.
create table xtest
as
select rownum as rn
from dual
connect by rownum < 10000




пробую....

Код: plsql
1.
2.
3.
select bytes
from  dba_segments 
where segment_name = 'XTEST';



bytes 262144

Код: plsql
1.
2.
3.
select blocks/*20*/ *(select value from v$parameter where name = 'db_block_size') /*8192*/ as bytes
from all_tables t
where table_name = 'XTEST'



bytes 163840

а если еще посмотреть план для

select *
from XTEST

то показывает bytes 39996

кому верить ?
сколько реально читается при запросе и сколько используется в explain plan

то что место выделяется большими кусками мне понятно
непонятно, откуда берется 39996
...
Рейтинг: 0 / 0
05.10.2018, 12:20
    #39713490
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
nxx,

объем корзинки
объем яиц в корзинке
объем яичницы
...
Рейтинг: 0 / 0
05.10.2018, 12:21
    #39713493
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
...
Рейтинг: 0 / 0
05.10.2018, 13:30
    #39713555
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
nxxнепонятно, откуда берется 39996Во-первых, если хочется предельной точности надо собирать статистику с estimate_percent=>100.

Далее, в segments 24 блока (3 экстента), а в tables - 20 = 24 - заголовок сегмента - 3 * заголовок экстента.
То есть, tables показывает "Number of used data blocks in the table", а segments - все. (это можно прочитать в описании представлений словаря)

39996 = num_rows * avg_row_len.
...
Рейтинг: 0 / 0
05.10.2018, 13:36
    #39713556
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
всё-таки мне кажется разница слишком большая
75% накладных расходов и 25% данных ?
...
Рейтинг: 0 / 0
05.10.2018, 13:38
    #39713558
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
nxx,

Расуждения могут несколько отличаться в записимости от automatic/manual segment space management.
Я говорил про auto.
...
Рейтинг: 0 / 0
05.10.2018, 13:42
    #39713562
nxx
nxx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
dbms_photoshopnxx,

Расуждения могут несколько отличаться в записимости от automatic/manual segment space management.
Я говорил про auto.

а как это посмотреть ? (база не моя)
...
Рейтинг: 0 / 0
05.10.2018, 14:19
    #39713599
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
nxxвсё-таки мне кажется разница слишком большая
75% накладных расходов и 25% данных ?Все еще хуже. При построении плана берется средняя длина, что может давать заметное отличие от суммы фактических.
Код: plsql
1.
2.
3.
4.
5.
SQL> select sum(vsize(rn)) x from xtest;

         X
----------
     29799

То есть
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> create table xtest as select rownum as rn from dual connect by rownum < 10000;

Table created.

SQL> select (select sum(vsize(rn)) from xtest) / (select blocks * 8192 from user_segments where segment_name = 'XTEST') ratio from dual;

     RATIO
----------
.151565552

Сделай дамп блоков, посмотри что там за беспредел.

Но бывает все не так плохо
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SQL> create table xtest pctfree 0 as select lpad('x',1080,'x') rn from dual connect by rownum <= 10000;

Table created.

SQL> select (select sum(vsize(rn)) from xtest) / (select blocks * 8192 from user_segments where segment_name = 'XTEST') ratio from dual;

     RATIO
----------
.858306885


nxxа как это посмотреть ? (база не моя)Я верю ты в состоянии скопировать незнакомые слова к гугл.
...
Рейтинг: 0 / 0
05.10.2018, 14:34
    #39713611
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
размер таблицы (настоящий)
dbms_photoshop... средняя длина, что может давать заметное отличие от суммы ...Ага. Приблизительно в произведение на количество строк. Под (avg_)row_len может пониматься суммарная длина значений с "разделителем" в один байт к каждому полю.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / размер таблицы (настоящий) / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]