Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Компрессия / 9 сообщений из 9, страница 1 из 1
29.07.2007, 07:39
    #34690926
khl
khl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
Просматривая вот эту тему /topic/448753&pg=2 , Я нашел следующие цифры.

Таблица в 1000 колонок с 1000 000 строк. Integer. В одной колонке каждой записи заносим число 1.
SQL Server 2005 - 17.2 Gb
Cache 5.2 - 17 Mb
Oracle (единицы в первой колонке) 11.Mb
Oracle (единицы в последней колонке) 1.11 Gb
Interbase (единицы в первой колонке - 110МБ
Interbase (единицы в последней колонке) - 131МБ

Мне стало интересно про DB2. Сделал аналогично, указал COMPRESSION.
В обоих случаях получил 4 Гб. Т.е. на хранение NULL’ов в этой таблице DB2 тратит по 4 байта как и для INTEGER.

Так и должно быть?
...
Рейтинг: 0 / 0
29.07.2007, 07:41
    #34690927
khl
khl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
DB2 Express-C v9.1 fp2.
...
Рейтинг: 0 / 0
29.07.2007, 19:05
    #34691236
khl
khl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
Подробности.
Размер страницы 8k. Создаем таблицу
Код: plaintext
1.
2.
3.
CREATE TABLE M2 
   (COL0 INTEGER COMPRESS SYSTEM DEFAULT) 
   COMPRESS YES
   VALUE COMPRESSION IN TST; 

Добавляем колонки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE ss ( )
	DYNAMIC RESULT SETS  0 
BEGIN
  declare stmt varchar( 4096 );
  DECLARE i INTEGER DEFAULT  0 ;
  WHILE i <  999  DO      
    SET i = i +  1 ;
    SET stmt = 'ALTER TABLE m2 ADD col' || CHAR(i) || ' INT  COMPRESS SYSTEM DEFAULT';
    execute immediate stmt;	  
  END WHILE;	
END@ 


Вставлям строки
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CREATE PROCEDURE sss()
    LANGUAGE SQL 
    BEGIN
        DECLARE i INTEGER DEFAULT  0 ;
        DECLARE j INTEGER DEFAULT  0 ;
        WHILE i <  1000000  DO 
            SET i = i +  1 ;
            SET j = j +  1 ;
            INSERT INTO m2 (col0) VALUES ( 1 );
            IF j >=  10000  THEN
                COMMIT WORK;
                SET j =  0 ;
            END IF;
        END WHILE;
    END@

Ждем...

Смотрим.
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT TABNAME AS TABLE_NAME,
  INT(DATA_OBJECT_P_SIZE/ 1024 ) AS OBJ_SZ_MB,
  INT(INDEX_OBJECT_P_SIZE/ 1024 ) AS INX_SZ_MB,
  INT(XML_OBJECT_P_SIZE/ 1024 ) AS XML_SZ_MB
FROM SYSIBMADM.ADMINTABINFO
WHERE TABSCHEMA='KHL' AND
      TABNAME = 'M2'
OBJ_SZ_MB = 3907
INX_SZ_MB = 0
XML_SZ_MB = 0
...
Рейтинг: 0 / 0
30.07.2007, 00:31
    #34691396
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
Зависит от библиотеки компрессии. Ее вы можете написать самостоятельно. Интерфейсы описаны в документации.
Бесплатно скачать фильмы по http (ftp) можно на http://kinostock.ru
...
Рейтинг: 0 / 0
30.07.2007, 10:07
    #34691683
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
Почитайте тут .
Data row compression, как описано тут , доступна только в ESE версии.
После вставки сделайте runstats и посмотрите, может что изменится...
...
Рейтинг: 0 / 0
31.07.2007, 11:58
    #34695028
khl
khl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
Проделал все то же самое, только убрал из скриптов упоминание о компрессии.
Размер таблицы вздулся до 7813 Мб.
Все-таки этот параметр имеет значение...

Интересно было бы увидеть результаты на Enterprise версии c максимальной компрессией. И не увеличивает ли компрессия риск повреждения базы в случае отключения питания.
...
Рейтинг: 0 / 0
31.07.2007, 15:29
    #34695926
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
Пробовал ваш пример на 1000 int колонках и 100 000 строк (в мегабайтах):

Код: plaintext
1.
2.
3.
4.
                           COMPRESS
                          | Y |  N
                          |---|----
COMPRESS SYSTEM DEFAULT |Y| 30| 390
                        |N| 52| 781

Результат не зависит от того, в какую колонку помещать значения.
...
Рейтинг: 0 / 0
31.07.2007, 21:21
    #34696830
khl
khl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
Mark BarinsteinПробовал ваш пример на 1000 int колонках и 100 000 строк (в мегабайтах):

Код: plaintext
1.
2.
3.
4.
                           COMPRESS
                          | Y |  N
                          |---|----
COMPRESS SYSTEM DEFAULT |Y| 30| 390
                        |N| 52| 781

Результат не зависит от того, в какую колонку помещать значения.

Опечатка?
Это для 100 000 или 1000 000 строк ?
...
Рейтинг: 0 / 0
31.07.2007, 21:26
    #34696837
khl
khl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компрессия
Сообразил...
Судя по цифрам - 100k строк.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Компрессия / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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