powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / СУБД с поддержкой компресии данных и индексов
97 сообщений из 97, показаны все 4 страниц
СУБД с поддержкой компресии данных и индексов
    #35992915
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть возможность реализовать сжатие/разжатие на стороне клиента, но тогда будет капут индексам.
Грамотно это реализовать может только сама СУБД.
Существуют ли такие СУБД ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35992931
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть еще мысль просто напросто использовать файловую систему с сжатием.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35992942
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiСуществуют ли такие СУБД ?

Oracle, Firebird, Interbase. А, собственно, нафига? Не проще ли порнуху
на сервере грохнуть?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35993000
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhnecki wrote:
> Грамотно это реализовать может только сама СУБД.

> Существуют ли такие СУБД ?

Практически все современные СУБД в том или ином виде используют
сжатие в индексах ( в ключах).

И наоборот, практически никто не сжимает данные. Для эффектного сжатия
нужны значительные объёмы данных, которых в реляционных СУБД нет,
там максимум есть одна запись, которая достаточно коротка.

Так что ты этого не хочешь на самом деле (только ещё этого не понимаешь).
Если же тебе надо жать C/BLOB-ы, тогда да, можно жать. Но это можно
и нужно делать на клиенте, никакие индексы не пострадают, потому что
C/BLOB-ы не индексируются.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35993105
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiГрамотно это реализовать может только сама СУБД.
Существуют ли такие СУБД ?

MS SQL 2008 поддерживает компрессию данных, индексов и бэкапов.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35993108
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Тут не только дело в блобах. Например, использование компрессии позволяет разместить на одной странице больше записей (правда без увеличения максимального размера самой записи).
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35993194
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sybase SA10/11 поддерживает компрессию данных на уровне отдельных таблиц. А девятая версия(если не ошибаюсь) только на уровне всей БД.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35993370
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:

> MS SQL 2008 поддерживает компрессию данных, индексов и бэкапов.

Вряд ли данных. Может только блобы. А индексы и бэкапы все сжимают.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35993373
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin wrote:

> Тут не только дело в блобах. Например, использование компрессии
> позволяет разместить на одной странице больше записей (правда без
> увеличения максимального размера самой записи).

Ага, и делает невозможным бинарный поиск записи на странице, например.
Проходили.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35993399
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВряд ли данных. Может только блобы. А индексы и бэкапы все сжимают.

Компрессия применяется и к страницам данных и индексов.

MasterZivАга, и делает невозможным бинарный поиск записи на странице, например.
Проходили.

каким образом физический формат хранения может повлиять на бинарный поиск?!
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35993856
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivАга, и делает невозможным бинарный поиск записи на странице, например.
Проходили.Может стоит привести ссылки на формат, который предполагает "бинарный поиск записи на странице" ?..
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35994148
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiГрамотно это реализовать может только сама СУБД.
Существуют ли такие СУБД ?
Informix Dynamic Server data compression and storage optimization
Save storage resources, reduce I/O, and optimize performance with new IDS features
http://www.ibm.com/developerworks/data/library/techarticle/dm-0904idsoptimization/index.html?ca=drs-&ca=dkw-informix
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35994878
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.
Если вы думаете что сжатие не имеет смысла, то вот вам смысл:
Размер самой базы небольшой ~4Gb. Сжатие нужно для того, чтобы вся база поместилась в дисковом кеше - 3Gb памяти. Таким образом к диску будут обращения только для записи, что значительно снизит нагрузку на него. В данный момент все ресурсы уходят на чтение с диска, процессор загружен на 10% и не использовать сжатие в данной ситуации было бы глупо :)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35994916
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiСпасибо за ответы.
Если вы думаете что сжатие не имеет смысла, то вот вам смысл:
авторРазмер самой базы небольшой ~4Gb. Сжатие нужно для того, чтобы вся база поместилась в дисковом кеше - 3Gb памяти. Таким образом к диску будут обращения только для записи, что значительно снизит нагрузку на него. В данный момент все ресурсы уходят на чтение с диска, процессор загружен на 10% и не использовать сжатие в данной ситуации было бы глупо :)

Ой, не в ту сторону Вы копаете. Не для баз такого размера предназначено сжатие даных, реализуемых в современных СУБД. Да и поддерживается оно (как, например, в MS SQL) тока в топовых редакциях.

База должна "помещаться" не в дисковом, а в буферном кэше. И... о какой СУБД идет речь?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35994922
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
должна не должна, это не важно,
важно что ресурсы ограничены :)
Mysql сейчас
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995004
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhnecki wrote:

> данный момент все ресурсы уходят на чтение с диска, процессор загружен
> на 10% и не использовать сжатие в данной ситуации было бы глупо :)

Вообще-то для баз данных очень характерно, что основная нагрузка ложиться
на диск. Чтение из файлов -- это хлеб СУБД, так что ничего удивительного.
А все данные никогда в кэш не поместить. Если вы их сожмёте, и они
влезут в память, то для разархивации память всё равно потребуется. И
для архивации тоже.

Не знаю, по-моему сжатие данных -- очень сомнительная фича для СУБД.
Да, можно жать индексы (префиксно), можно дампы, можно блобы -- их
записывают и считывают, в СУБД эти данные не обрабатываются.
Всё остальное жать не имеет смысла по-моему, на уровне поего
сегодняшнего понимания вещей.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995006
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhnecki wrote:

> должна не должна, это не важно,
> важно что ресурсы ограничены :)
> Mysql сейчас

Ресурсы СУБД всегда ограничены, а база всегда больше памяти.
Иначе нет смысла использовать СУБД. Но это ещё не повод
применять сжатие.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995161
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiMysql сейчас myisampack — Generate Compressed, Read-Only MyISAM Tables - Читали?

MasterZiv... можно жать индексы (префиксно)...А вот это - увы, в MySQL отсутствует.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995224
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivВообще-то для баз данных очень характерно, что основная нагрузка ложиться
на диск. Чтение из файлов -- это хлеб СУБД, так что ничего удивительного.
А все данные никогда в кэш не поместить. Если вы их сожмёте, и они
влезут в память, то для разархивации память всё равно потребуется. И
для архивации тоже.

Не знаю, по-моему сжатие данных -- очень сомнительная фича для СУБД.
Да, можно жать индексы (префиксно), можно дампы, можно блобы -- их
записывают и считывают, в СУБД эти данные не обрабатываются.
Всё остальное жать не имеет смысла по-моему, на уровне поего
сегодняшнего понимания вещей.Т.е. уменьшить IO за счёт CPU - это сомнительная фича ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995236
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladТ.е. уменьшить IO за счёт CPU - это сомнительная фича ?Если база работает не только на чтение, но и на запись (а именно в рассчете на это и разрабатывается большинство СУБД), то вероятность уменьшения IO, имхо, сильно сокращается. А вот потребление CPU может возрасти очень значительно.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995239
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO
Компрессия эффективна только для всяких DWH приложений с денормализацией и большим размером блока (там есть где разгулятся)
vazhnecki должна не должна, это не важно, важно что ресурсы ограничены :)
Стоимость ресурсов куда меньше, чем стоимость времени специалиста для создания/поддержки вашего велосипеда.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995255
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, пользу или бесполезность сжатия можно обсуждать сколько угодно.
Здесь же хотелось бы получить максимум информации по СУБД которые уже владеют такой фичей.

Вот смотрю у DB2 есть способность сжимать как данные так и индексы, но цена ..
Кстати из бесплатных есть такие ? .. Postgresql вот умеет сжимать данные но не индексы.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995259
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
myisampack К сожалению она ReadOnly, хоть это и можно кое-как обойти.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995265
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257
Стоимость ресурсов куда меньше, чем стоимость времени специалиста для создания/поддержки вашего велосипеда.
правда ? а вы пробовали добавить к dedicated серверу пару гигов памяти ? ну вот идите уточните цены, а потом будем спорить :)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995322
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofthvladТ.е. уменьшить IO за счёт CPU - это сомнительная фича ?Если база работает не только на чтение, но и на запись (а именно в рассчете на это и разрабатывается большинство СУБД)Обычно операций чтения таки больше, чем операций записи. А часто - намного больше.

miksoftто вероятность уменьшения IO, имхо, сильно сокращается.Почему ? И почему вероятность ?

miksoftА вот потребление CPU может возрасти очень значительно.Это очень зависит от схемы компрессии. Понятно, что rar и даже менее ресурсоёмкий zip никто не встраивает в СУБД (разве что в очень специальных случаях).
Необходимо также учитывать то, что мощность CPU растёт гораздо быстрее скорости дисковых систем. Может быть SSD что-то изменит, но пока что оно не годится для массового применения.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995329
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiКстати из бесплатных есть такие ? .. Postgresql вот умеет сжимать данные но не индексы.Firebird
Но нужно понимать, что у версионников в записи присутствует немаленький заголовок. Сжатие данных в Firebird служит в основном для удаления хвостовых пробелов в строках, сжимается каждая запись сама-по-себе, рекордных показателей тут нет. Бекверсии тоже чаще всего представлены в виде достаточно компактных дельт.
А вот индексы в FB жмутся очень хорошо.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995340
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladmiksoftто вероятность уменьшения IO, имхо, сильно сокращается.Почему ? И почему вероятность ?

miksoftА вот потребление CPU может возрасти очень значительно.Это очень зависит от схемы компрессии. Понятно, что rar и даже менее ресурсоёмкий zip никто не встраивает в СУБД (разве что в очень специальных случаях).
Необходимо также учитывать то, что мощность CPU растёт гораздо быстрее скорости дисковых систем. Может быть SSD что-то изменит, но пока что оно не годится для массового применения.Насколько я вижу по статистике ваших постов, вы работаете с InterBase и/или Firebird.
Вот на их примере и покажите, плиз, выполнение операции апдейта одной записи в сжатой таблице таким образом, чтобы это дало и практическое сокращение IO для этого апдейта, и неувеличение такового для последующих чтений этой же записи. "Схему компрессии" придумайте/выберите на свой вкус.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995344
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА вот индексы в FB жмутся очень хорошо.Жмутся как именно? префиксно или а-ля zip ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995347
Senya_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftНасколько я вижу по статистике ваших постов, вы работаете с InterBase и/или FirebirdВыделенное - неправильно. Правильно: "Вы работаете НАД..." ;)))
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995350
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senya_LmiksoftНасколько я вижу по статистике ваших постов, вы работаете с InterBase и/или FirebirdВыделенное - неправильно. Правильно: "Вы работаете НАД..." ;)))Прошу простить, был не в курсе.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995367
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВот на их примере и покажите, плиз, выполнение операции апдейта одной записи в сжатой таблице таким образом, чтобы это дало и практическое сокращение IO для этого апдейта, и неувеличение такового для последующих чтений этой же записи. "Схему компрессии" придумайте/выберите на свой вкус.А зачем это мне нужно ?

PS Подумайте ещё раз над моим предыдущим сообщением, нет в Firebird'е никаких "сжатых таблиц".
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995372
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofthvladА вот индексы в FB жмутся очень хорошо.Жмутся как именно? префиксно или а-ля zip ?Префиксная компрессия ключей плюс отбрасывание хвостовых пробелов строк.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995375
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladА зачем это мне нужно ? Чтобы понять "почему вероятность".
hvladPS Подумайте ещё раз над моим предыдущим сообщением, нет в Firebird'е никаких "сжатых таблиц".А я и не говорил, что они там есть. Я лишь попросил предложить "схему компрессии", которая дала бы вероятность (а лучше - уверенность) сокращения IO на примере Firebird-а.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995380
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladmiksofthvladА вот индексы в FB жмутся очень хорошо.Жмутся как именно? префиксно или а-ля zip ?Префиксная компрессия ключей плюс отбрасывание хвостовых пробелов строк.Тогда это тоже "с некоторой вероятностью".
Уникальное (или близкое к тому) поле в начало индекса и вся компрессия сразу исчезает.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995424
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofthvladА зачем это мне нужно ? Чтобы понять "почему вероятность".Я совершенно не понимаю, что вы мне хотите сказать

miksofthvladPS Подумайте ещё раз над моим предыдущим сообщением, нет в Firebird'е никаких "сжатых таблиц".А я и не говорил, что они там есть. Я лишь попросил предложить "схему компрессии", которая дала бы вероятность (а лучше - уверенность) сокращения IO на примере Firebird-а.В Firebird'е нет разных схем хранения записей. Соответственно невозможно, не трогая исходников, сравнить IO с и без сжатия записей. Так что всё, что вам остаётся - поверить мне, или привести обоснование (лучше практический пример) того, что сжатие может увеличить IO.
Ещё можно закончить этот разговор, оставшись при своих.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995428
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofthvladПрефиксная компрессия ключей плюс отбрасывание хвостовых пробелов строк.Тогда это тоже "с некоторой вероятностью".
Уникальное (или близкое к тому) поле в начало индекса и вся компрессия сразу исчезает.С чего бы это ? Или спорим о вкусе устриц с тем, кто их ест ?

Берёте свою любимую таблицу и индексы из той СУБД, в которой вы работаете, переносите её в Firebird, снимаете статистику и смотрите на кол-во страниц под данные и индексы, средний р-р записи и ключа индекса, сравниваете с оригиналом.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995470
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad wrote:
> Т.е. уменьшить IO за счёт CPU - это сомнительная фича ?

Нет. Но думаю не получится. В общем случае. В каких-то
частностях ещё может быть (типа read-only БД, или ещё
какая-то экзотика).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995471
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257 wrote:
> Компрессия эффективна только для всяких DWH приложений с денормализацией
> и большим размером блока (там есть где разгулятся)

Ну, да, вот тут соглашусь. Там ещё хранение по колонкам может помочь
сильно -- в колонах как правило данные сильно повторяются, там
из них словари удобно делать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995472
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВ Firebird'е нет разных схем хранения записей.Первоначально я просил "придумать" возможную схему компрессии. Если вас так сбивает слово "Firebird", то вычеркните его и замените на "некую асбстрактную СУБД".
hvladТак что всё, что вам остаётся - поверить мне, или привести обоснование (лучше практический пример) того, что сжатие может увеличить IO.Пример:
Допустим, есть сжатый по zip-образномуалгоритму логический блок таблицы. Он размещается целиком в физическом блоке меньшего размера. Происходит апдейт записи в этом блоке. Новые данные (пусть даже той же "несжатой" длины) перестают умещаться в один физический блок и надо писать уже два блока. Причем либо один на прежнем месте, второй на новом, либо оба на новом. Думаю, накладные расходы в обоих случаях можете себе представить.

hvladЕщё можно закончить этот разговор, оставшись при своих.Видимо, так и придется поступить... по крайней мере, на сегодня...
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995476
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft wrote:

> Жмутся как именно? префиксно или а-ля zip ?

Да префиксно, конечно. как ещё можно сжать индекс ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995477
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladmiksofthvladПрефиксная компрессия ключей плюс отбрасывание хвостовых пробелов строк.Тогда это тоже "с некоторой вероятностью".
Уникальное (или близкое к тому) поле в начало индекса и вся компрессия сразу исчезает.С чего бы это ?На всякий случай уточню, что термин "Префиксная компрессия ключей" я понимаю в том виде, в каком он существует в Оракле. Возможно, это не совпадает с Firebird-ным варинатом.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995493
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft
Новые данные (пусть даже той же "несжатой" длины) перестают умещаться в
один физический блок и надо писать уже два блока. Причем либо один на
прежнем месте, второй на новом, либо оба на новом. Думаю, накладные
расходы в обоих случаях можете себе представить.

Ок, представляем. Напоминаю, что сравнение идёт со случаем несжатых
данных, в котором придётся писать уже не два, а как минимум три блока
(поскольку ни старые данные, ни новые в один блок не помещаются - это
Ваши условия задачи). Т.е. на Вашем примере компрессия даёт от 33
до 50% экономии времени ввода-вывода.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995498
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofthvladВ Firebird'е нет разных схем хранения записей.Первоначально я просил "придумать" возможную схему компрессии. Если вас так сбивает слово "Firebird", то вычеркните его и замените на "некую асбстрактную СУБД".А зачем мне что-то придумывать, когда я точно знаю как это работает в Firebird ? Остальные СУБД меня интересуют только в плане более эффективных реализаций...

miksoftПример:
Допустим, есть сжатый по zip-образномуалгоритму логический блок таблицы. Он размещается целиком в физическом блоке меньшего размера. Происходит апдейт записи в этом блоке. Новые данные (пусть даже той же "несжатой" длины) перестают умещаться в один физический блок и надо писать уже два блока. Причем либо один на прежнем месте, второй на новом, либо оба на новом. Думаю, накладные расходы в обоих случаях можете себе представить.Вы упоминаете zip-образный алгоритм, но не понятно к чему это.

Cжатые записи будут реже выходить за границы физ. страницы при апдейтах, чем несжатые т.к. каждая сжатая запись занимает меньше места. Это нужно доказывать ?
На самом деле в Firebird при апдейте создаётся новая версия записи и дельта между нею и старой версией, так что реальные процессы сложнеео описать в 2-х словах, во всяком случае я не собираюсь это тут делать.

Или вы о хранении записей с фиксированной длиной говорите, как в dbf ? В этом случае смешно даже сравнивать

Я не могу себе представить, почему обе страницы (старую и новую) нужно писать на новом месте. В любом случае это не влияет на кол-во IO writes - в обоих случаях нужно писать 2 страницы.

В том что вы написали я не вижу обоснования - почему сжатие увеличит IO ?

Возможно вы имеете в виду какое-то специфическое сжатие ? Я выше описал, как это происходит в Firebird.

miksofthvladЕщё можно закончить этот разговор, оставшись при своих.Видимо, так и придется поступить... по крайней мере, на сегодня...Не возражаю. И на завтра тоже :)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995500
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovОк, представляем. Напоминаю, что сравнение идёт со случаем несжатых
данных, в котором придётся писать уже не два, а как минимум три блока
(поскольку ни старые данные, ни новые в один блок не помещаются - это
Ваши условия задачи). Т.е. на Вашем примере компрессия даёт от 33
до 50% экономии времени ввода-вывода.
Почему три? Храниться те же записи будут в двух блоках, а записать достаточно будет один блок, тот в котором находится изменяемая запись.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995501
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofthvladmiksoftУникальное (или близкое к тому) поле в начало индекса и вся компрессия сразу исчезает.С чего бы это ?На всякий случай уточню, что термин "Префиксная компрессия ключей" я понимаю в том виде, в каком он существует в Оракле. Возможно, это не совпадает с Firebird-ным варинатом.Если хотите, покажите на реальном примере компрессию ключей в индексе Оракла, а я покажу как это будет выглядеть в Firebird.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35995507
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladCжатые записи будут реже выходить за границы физ. страницы при апдейтахИмхо, в общем случае - неочевидно, сильно зависит от характера данных.
hvladИли вы о хранении записей с фиксированной длиной говорите, как в dbf ?Нет, конечно. Видимо, каждый из нас думает в свой пространстве умолчаний, отличном от такового у других :)

hvladЯ не могу себе представить, почему обе страницы (старую и новую) нужно писать на новом месте. В любом случае это не влияет на кол-во IO writes - в обоих случаях нужно писать 2 страницы.Например, потому, что одна многоблочная операция дешевле, чем несколько одноблочных при равном количестве блоков.

hvladВ том что вы написали я не вижу обоснования - почему сжатие увеличит IO ?Изначально вопрос вами был поставлен так:hvladmiksoftто вероятность уменьшения IO, имхо, сильно сокращается.Почему ? И почему вероятность ?слово "увеличит" не вижу...
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996276
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftПочему три?

Потому что я неверно прочитал условия. Для меня "логический блок" это
ровно одна запись, в то время как Вы говорите о большом их количестве.

Влад, я, кажется, понял, что нам пытается miksoft объяснить. Смотри:
происходит update записи данными, которые сжимаются не так хорошо как
предыдущие и при этом на странице уже нет резерва места . Что при
этом произойдёт:

Firebird - сплит страницы, запись двух страниц данных;
Oracle без сжатия - сплита нет, запись двух страниц (данные+лог);
Oracle со сжатием - сплит и запись трёх страниц (две данных+лог);
DBASE (сжатия нет по определению) - сплита нет, запись одной страницы.

Вот только что это доказывает? Что однопользовательский DBASE быстрее
многопользовательских серверов? Так это как бы общеизвестно... Что в
этом (наихудшем) сценарии Oracle проигрывает? Так сейчас прибежит Ё и
скажет, что это фигня и sparse write всё компенсирует. И, собственно,
именно поэтому сжатие в Оракуле опционально и по умолчанию выключено.

Нет, конечно, он может сказать, что DBASE (в своей FoxPro ипостаси)
бывает многопользовательским, но согласно учению eugenkru, для
обеспечения snapshot на нём приходится использовать буферные таблицы,
что увеличивает количество ввода-вывода при чтении в N раз, где N =
числу пользователей.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996289
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasilisvazhneckiГрамотно это реализовать может только сама СУБД.
Существуют ли такие СУБД ?
Informix Dynamic Server data compression and storage optimization
Save storage resources, reduce I/O, and optimize performance with new IDS features
http://www.ibm.com/developerworks/data/library/techarticle/dm-0904idsoptimization/index.html?ca=drs-&ca=dkw-informix

Смотрел ссылку по Informix'у. Реализовано "словарное" сжатие данных. В зависимости от структуры и данных есть варианты когда экономия очевидна. Кому-то пригодится, а кому-то ни в дугу. Говорить о процентном соотношение "осчастливленных" реально - не на чем. А индексы, между прочим, сами по себе являются средством "сжатия I/O" :). А кто говорит, что "компрессия данных" должна приводить к уменьшению объёма устройств хранения памяти (HDD+RAM+...)? :)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996313
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftДопустим, есть сжатый по zip-образномуалгоритму логический блок таблицы. Он размещается целиком в физическом блоке меньшего размера.

это ужасно. Надеюсь что нет таких СУБД, которые сжимают целиком содержимое "блоков" или страниц.
Давайте лучше рассмотрим разные варианты сжатия, которые имеются, последовательно, от отсутствия сжатия до например того, что мне известно о Firebird.

Итак, если ничего не сжимается:
- записи хранятся полной длины. Например, если есть столбец varchar(1024), то так на диске 1к и хранится, независимо от содержимого.
- ключи хранятся тоже по полной длине, причем даже есть два рядом одинаковых ключа, они так и хранятся - ключ+ссылка на запись.

Теперь, варианты сжатия ключей , последовательно:
1 . не хранить концевые пробелы для строк, или записывать кол-во концевых пробелов. Для чисел - убирать "лишние" нули.

2 . префиксное сжатие следующего ключа на основании значения предыдущего. Например, есть ключи "Иванов и "Иванова". При сжатии во втором ключе мы напишем "6а"

3 . для одинаковых ключей вообще их не хранить, а формировать список номеров записей для конкретного ключа. Например есть
Иванов 50
Иванов 55
вместо этого записать ключ Иванов и к нему 2 ссылки на записи 50 и 55.

в ФБ используются все 3 способа. Описание есть в статье
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_expert1

реальный пример:
таблица с 2189152 записей integer. Индекс первичного ключа занимает 12.63 мегабайт а, средняя длина ключа равна 1 байту. Если ничего не сжимать, и взять размер ключа по минимуму - 4 байта значение (integer) и 8 байт ссылка на запись, то такой теоретический индекс занимал бы 25 мегабайт (с тем же числом ключей). Замечу, что это УНИКАЛЬНЫЙ индекс, где ключи не повторяются. Но зато они упаковываются потому, что числа обычно идут подряд :-)

В этой же таблице индекс по GUID varchar(16), заполненный одним (!) значением занимает 8.38 мегабайт. Тут "упаковка" максимальная, т.к. на самом деле ключ один, и 2 миллиона ссылок на записи. (индекс бесполезный, кстати).

могу еще практические примеры привести, у меня их навалом.

Теперь сжатие записей :
1. у строк не хранить концевые пробелы или записывать кол-во концевых пробелов. То есть запись получается переменной длины.

реальный пример - в таблице из столбцов vchar(32), vchar(32), char(1), vchar(64), vchar(512) при максимально возможном размере записи в 649 байт средний размер записи - 169 байт.
Или, таблица с примерно 20-ю столбцами и макс. размером записи в 868 байт на деле имеет средний размер записи 124 байта.
Понятно что это данные по конкретной БД и конкретным таблицам, но в среднем в IB/FB реальные данные на диске занимают примерно в 3 раза меньше чем посчитанная по размеру полей структура таблицы.

2. тут лучше пусть hvlad допишет :-)

я же добавлю еще ссылку на структуру страниц ФБ:
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_expert2
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996543
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Так сейчас прибежит Ё и
скажет, что это фигня и sparse write всё компенсирует. И, собственно,
именно поэтому сжатие в Оракуле опционально и по умолчанию выключено

не угадал, я скажу что конкретно фанатики ФБ могут отключить писанину лога и жить счастливо без него, почти также как они живут на ФБ. раз даже на своих ошибках они не учатся - это будет вполне здравый совет.

Dimitry SibiryakovНет, конечно, он может сказать, что DBASE (в своей FoxPro ипостаси)
бывает многопользовательским, но согласно учению eugenkru, для
обеспечения snapshot на нём приходится использовать буферные таблицы,
что увеличивает количество ввода-вывода при чтении в N раз, где N =
числу пользователей.


чем вызвана сия фантазия ? буферизация у фокспро на клиенте происходит и снепшот там при всем желании ...
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996578
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv wrote:

> Теперь, *варианты сжатия ключей*, последовательно:
> *1*. не хранить концевые пробелы для строк, или записывать кол-во
> концевых пробелов. Для чисел - убирать "лишние" нули.
>
> *2*. префиксное сжатие следующего ключа на основании значения
> предыдущего. Например, есть ключи "Иванов и "Иванова". При сжатии во
> втором ключе мы напишем "6а"
>
> *3*. для одинаковых ключей вообще их не хранить, а формировать список
> номеров записей для конкретного ключа. Например есть

Это всё я бы не подразумевал под "сжатием данных". Это -- детский
сад, приёмы, которые используют все более-менее современные СУБД.
Это не интересно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996596
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто всё я бы не подразумевал под "сжатием данных". Это -- детский
сад, приёмы, которые используют все более-менее современные СУБД.
Это не интересно.
гм. а на мой взгляд "нефиксированный" размер записи - это уже сжатие, я результат привел. По поводу "все более-менее" - мы уже в курсе что Оракл как-то сжимает, но у него это по умолчанию отключено.

Посмотрите у себя размер уникального индекса по integer. я дал пример для ФБ что сжатие примерно 0.64 (именно для уникального). Давайте сравним.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996669
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
не угадал, я скажу что конкретно фанатики ФБ могут отключить писанину
лога и жить счастливо без него, почти также как они живут на ФБ.

Вот только у Оракула вместе с логом отпадёт и версионность... Кому
сдался Оракул без версионности?.. Писатели, блокирующие читателей это
прошлый век.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996845
Dimitry SibiryakovВот только у Оракула вместе с логом отпадёт и версионность...Подробнее, пжлста, что там и где у него отпадет?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35996958
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оракул ЛоговичПодробнее, пжлста, что там и где у него отпадет?

Ё предлагает отключить undo log. А разве не в нём Оракул держит версии
записей для выдачи запросам, заинтересованным в несвежих данных? И разве
не из-за его переполнения вылазит "Snapshot is too old"?.. А?..
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997008
Dimitry SibiryakovЁ предлагает отключить undo log. А разве не в нём Оракул держит версии
записей для выдачи запросам, заинтересованным в несвежих данных? И разве
не из-за его переполнения вылазит "Snapshot is too old"?.. А?..

1) В Oracle нет "undo log" как отдельного журнала в его обычном понимании
Если где-то в документации этот термин и употребляется, то по слабоумию ее авторов
2) Отключить использование undo нельзя. Никак.
3) Версионность у Oracle не может отпасть. Никак. Никогда. Это не яйца ;-)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997059
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оракул Логович
1) В Oracle нет "undo log" как отдельного журнала в его обычном понимании
Если где-то в документации этот термин и употребляется, то по слабоумию
ее авторов

Хммм... Полез в свежий концепт и действительно - мои знания семёрки
можно сливать в канализацию, поскольку
Earlier releases of Oracle used rollback segments to store undo
information. The information in a rollback segment was used
during database recovery for generating read-consistent database
information and for rolling back uncommitted transactions for
users.
Space management for these rollback segments was complex, and
Oracle has deprecated that method.
Теперь Оракул хранит версии в таком же тейблспейсе, как и данные. Что не
меняет факта, что ему приходится записывать туда старые данные при
update. Значит в моём сообщении "+лог" следует читать как "+undo
tablespace". Что, впрочем, не проясняет того факта, что же именно Ё
предлагал отключить.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997170
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Теперь Оракул хранит версии в таком же тейблспейсе, как и данные. Что не
меняет факта, что ему приходится записывать туда старые данные при
update. Значит в моём сообщении "+лог" следует читать как "+undo
tablespace". Что, впрочем, не проясняет того факта, что же именно Ё
предлагал отключить.


в оракле есть один лог - REDO. а ваше сообщения боюсь не следует читать и в новой редакции, т.к. они становятся еще более бредовым, чем предыдущее. или вы на полном серьезе считаете, что снапшот ФБ абсолютно бесплатен ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997275
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!
или вы на полном серьезе считаете, что снапшот ФБ абсолютно бесплатен ?

Нет, но Оракулу его сжатие обходится дороже.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997314
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Нет, но Оракулу его сжатие обходится дороже.


крокодил более зеленый чем длинный, пожалуй это самая здравая ваша мысль в ветке
действительно сжатие блоков в оракле обходится дороже поддержки версионности ФБ.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997480
Dimitry Sibiryakovмои знания семёрки можно сливать в канализациюОчень что-то я сомневаюсь в этих "знаниях семерки", ибо сегменты отката (rollback segments) существовали и в Oracle 7, и гораздо раньше :)

Dimitry SibiryakovТеперь Оракул хранит версии в таком же тейблспейсе, как и данные.Он это делал и раньше, начиная с версии 4, 1984 год. Просто начиная с 9i альтернативой "управляемым вручную" rollback segments являются "управляемые автоматически" undo segments. По сути это практически одно и то же. То есть никогда Oracle данные undo не хранил ни в каких специальных журналах
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997512
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dimitry Sibiryakov
Воздержитесь от опрометчивых заявлений.

По теме топика - если что-то хорошо сжимается, то это повод подумать об дизайне базы, ибо нормализация суть компрессия (маленький ID взамен большой строки)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997555
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257Воздержитесь от опрометчивых заявлений.

SergSuper усы сбрил?
cегменты отката (rollback segments) существовали и в Oracle 7, и
гораздо раньше :)
Правильно, существовали. И именно про это существование я помню. Но
теперь они deprecated.
Просто начиная с 9i альтернативой "управляемым вручную" rollback
segments являются "управляемые автоматически" undo segments.
Т.е. Concepts для 10g писал... как это Вы выразились... слабоумный
автор, поскольку он упорно называет Ваши undo segments - Undo Tablespaces:
ConceptsUndo tablespaces are special tablespaces used solely for
storing undo information.
Впрочем, как горшок ни назови, записывать в него старое содержимое
записи при update Оракул не перестанет, и потому описанный мной выше
сценарий остаётся в силе - Оракле производит три записи на диск там, где
DBASE хватает одного.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997653
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Оракле производит три записи на диск там, где DBASE хватает одного.


эт тонко подмечено, пол транзакции на оракле ну никак не записать. имхо фокс единственный кто не способен обеспечить атомарность транзакции. поэтому к примеру ФБ придется два раза модифицировать TIP, а потом еще за чужими старые версии строк подтирать, поэтому ФБ так проигрывает ораклу в и/о, не смотря на дефолтную компрессию.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997662
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!к примеру ФБ придется два раза модифицировать TIP, а потом еще за чужими старые версии строк подтиратьЁ выучило новое слово (TIP) ? Но, как всегда, не поняло что это и зачем :(

Первое утверждение (о TIP) совершенно не верно (если речь всё ещё идёт о апдейте записи), ибо TIP модифицируется только при коммите.

Второе (о подтирать чужие версии) тоже не соответствует действительности. Ибо на версии других записей никто не смотрит, а бекверсии обновляемой записи могут удаляться или сразу, или в фоне.
Да, ещё, - удаление бекверсии версии записи может и не приводить к дополнительному IO совсем.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997718
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
Первое утверждение (о TIP) совершенно не верно (если речь всё ещё идёт о апдейте записи), ибо TIP модифицируется только при коммите.

ну прям заинтриговал, может пояснишь подробней как активный статус транзакции прописывается в TIP при коммите ?

hvladВторое (о подтирать чужие версии) тоже не соответствует действительности. Ибо на версии других записей никто не смотрит, а бекверсии обновляемой записи могут удаляться или сразу, или в фоне.

а может это дворник злой (С)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997728
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!hvlad
Первое утверждение (о TIP) совершенно не верно (если речь всё ещё идёт о апдейте записи), ибо TIP модифицируется только при коммите.

ну прям заинтриговал, может пояснишь подробней как активный статус транзакции прописывается в TIP при коммите ?При коммите прописывается статус committed, как ни странно.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997737
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladПри коммите прописывается статус committed, как ни странно.

невероятно, точно что ли ? а когда все таки статус active прописывается ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997770
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!hvladПри коммите прописывается статус committed, как ни странно.

невероятно, точно что ли ? а когда все таки статус active прописывается ?TIP инициализируется так, что все тр-ции на нём имеют статус active.
Т.е. это происходит не при старте каждой тр-ции, а один раз при создании новой TIP.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997802
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladTIP инициализируется так, что все тр-ции на нём имеют статус active.
Т.е. это происходит не при старте каждой тр-ции, а один раз при создании новой TIP.

а данные транзакции в TIP значится магическим путем попадают ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997826
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!hvladTIP инициализируется так, что все тр-ции на нём имеют статус active.
Т.е. это происходит не при старте каждой тр-ции, а один раз при создании новой TIP.

а данные транзакции в TIP значится магическим путем попадают ?Какие именно данные ? Может кроме самого слова "TIP" нужно было ещё что-то прочитать ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997837
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladКакие именно данные ? Может кроме самого слова "TIP" нужно было ещё что-то прочитать ?

мусье решил прикинутся лаптем, что ж, мы таких любим и ценим. вспоминая анедот об анкетировании новых русских зададим вопрос так:
уж не при старте транзакции данные об активном статусе транзакции прописываются в TIP ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997849
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!hvladКакие именно данные ? Может кроме самого слова "TIP" нужно было ещё что-то прочитать ?

уж не при старте транзакции данные об активном статусе транзакции прописываются в TIP ?НЕТ. Читай выше до прояснения. И заодно расскажи - что, по твоему, есть "данные об активном статусе транзакции" ?

PS Насчёт лаптя я записал...
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997853
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladНЕТ. Читай выше до прояснения. И заодно расскажи - что, по твоему, есть "данные об активном статусе транзакции" ?

PS Насчёт лаптя я записал...

именно так. при старте данные о транзакции со статусом active прописываются в TIP именно это позволяет в случае падения сервера вычислить транзакции которые необходимо откатить.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997869
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтоб не быть голословным.
To create a transaction the start transaction call will first read the header page of the database, pull off the Next Transaction number, increment it, and write the header page back to the database. It also reads the OIT value from the header page and starts reading the TIP pages from that transaction number forward up to the OAT. If the OIT is now marked as committed, then the process continues checking the transactions until it comes to the first transaction in a state other than committed and records that in the process's own transaction header block. The process then starts from the OIT and reads forward until it finds the first active transaction and records that in it's transaction header block also.
http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_oit
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997892
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!hvladНЕТ. Читай выше до прояснения. И заодно расскажи - что, по твоему, есть "данные об активном статусе транзакции" ?

PS Насчёт лаптя я записал...

именно так. при старте данные о транзакции со статусом active прописываются в TIP именно это позволяет в случае падения сервера вычислить транзакции которые необходимо откатить.
При старте тр-ции обновляется header page, но никак не TIP. Надень очки и найди слово write в приведенной цитате.

Давай-ка ты не будешь учить меня где в моём доме что лежит...
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997899
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
При старте тр-ции обновляется header page, но никак не TIP. Надень очки и найди слово write в приведенной цитате.

Давай-ка ты не будешь учить меня где в моём доме что лежит...

придется учить, тебя собственно уж и не в первой. хорошо, пусть в цитате это header page, но повторяю, кроме модификации хеадера модифицируется TIP, где как минимум прописывается активный статус новой транзакции. именно по этой записи после краша сервера определяются активные транзакции в момент краха, которые необходимо откатить.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35997907
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!hvlad
При старте тр-ции обновляется header page, но никак не TIP. Надень очки и найди слово write в приведенной цитате.

Давай-ка ты не будешь учить меня где в моём доме что лежит...

придется учить, тебя собственно уж и не в первой. хорошо, пусть в цитате это header page, но повторяю, кроме модификации хеадера модифицируется TIP, где как минимум прописывается активный статус новой транзакции. именно по этой записи после краша сервера определяются активные транзакции в момент краха, которые необходимо откатить.Можешь повторять хоть до посинения, TIP от этого не станет обновляться при старте тр-ции.

Если будешь паинькой, расскажу как на самом деле после краша сервера определяются незакоммиченные в момент сбоя тр-ции. Которые, кстати, не нужно откатывать при старте сервера, в отличие от.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #35998452
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoмодифицируется TIP, где как минимум прописывается активный статус новой транзакции.
да не модифицируется TIP, ну чего нести фигню какую-то. в TIP каждая транзакция имеет 4 состояния
0 - active. НОЛЬ. Поэтому прописывать ничего не надо. Если Next увеличился, то в искомом номере активной транзакции будет НОЛЬ. А ноль этот записывается туда целиком во всю страницу tip при ее создании.
1 - committed
2 - rolled back
3 - limbo

Yoименно по этой записи после краша сервера определяются активные транзакции в момент краха

именно, именно. Папа у Васи силен в математике, но не знает как интерпретировать 0? Чего надо обзательно какие-то бредовые идеи придумывать?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36047078
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос по теме: подскажите UNIX open source СУБД которая умеет создавать и использовать буффер для не только для индексов но и для данных ? Чтобы в памяти сам процесс СУБД хранил этот кеш.
Смысл в том, что обязательно нужно полностью отказаться от файлового системного кеша.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36047096
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiподскажите UNIX open source СУБД которая
Все.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36047118
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Все.
Имхо, MySQL сюда подходит лишь с натяжкой, т.к. большинство буферов у него индивидуальны для каждой сессии и имеют довольно небольшой размер по-умолчанию, и, как следствие, их эффективность невысока.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36047171
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftИмхо, MySQL сюда подходит лишь с натяжкой

Натяжка, не натяжка... Раз есть хоть какой-то собственный кэш данных,
значит - подходит. Аффтар же - мастер формулировок...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36047201
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сформулировал я чётко, видимо вы не знаете о чем речь, поэтому не понятно.
mysql с MyIsam не подходит - кеширует только индексы, подходит с InnoDB, но кушает уж очень много места (это важно)
Postgres не подходит, так как кешируются только индексы, для данных используется файловый кеш

Про Firebird, MaxDB, Ingres нет данных
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36047338
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiPostgres не подходит, так как кешируются только индексы, для данных используется файловый кешэто Вы на глаз определили ? :)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36047427
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiСформулировал я чётко, видимо вы не знаете о чем речь, поэтому не понятно.
mysql с MyIsam не подходит - кеширует только индексы, подходит с InnoDB, но кушает уж очень много места (это важно)Можете процитировать документацию или дать ссылку?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36047804
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiподходит с InnoDB, но кушает уж очень много места (это важно)

Используйте innodb plugin и формат Barracuda а не "антелопа". Он намного компактнее сам по себе и еще кстати и компрессию поддерживает ROW_FORMAT=COMPRESSED

Вот вам дока
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36048650
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЁшvazhneckiPostgres не подходит, так как кешируются только индексы, для данных используется файловый кешэто Вы на глаз определили ? :)
откровенно говоря - да, так как я слабо знаком с postgres, но всё что я находил в интернете по вопросу указывало на это, если я не прав - покажите пожалуйста пальцем где почитать.

miksoftvazhnecki
mysql с MyIsam не подходит - кеширует только индексы, подходит с InnoDB, но кушает уж очень много места (это важно)Можете процитировать документацию или дать ссылку?
Если вы про myisam, то это я знаю абсолютно точно, к сожалению не могу дать ссылку на документацию где это написано прямым текстом, но посмотрев настройки mysqld для myisam (большинство по умолчанию для него), вы не найдёте там настройки буфера для страниц данных, есть только буфер key_buffer для индексов. Вот например фраза с "http://www.mysqlperformanceblog.com/2006/06/17/using-myisam-in-production/" - "Lack of row cache. MyISAM tables only have indexes cached in key_buffer while data is cached in OS cache."

Хрен - интересная информация, спасибо за неё
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36048677
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiне могу дать ссылку на документациюТогда я дам:
read_buffer_size
read_rnd_buffer_size
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36048964
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhnecki wrote:

> посмотрев настройки mysqld для myisam (большинство по умолчанию для
> него), вы не найдёте там настройки буфера для страниц данных, есть
> только буфер key_buffer для индексов. Вот например фраза с

Я хочу напомнить или указать, что для InnoDB данные и индексы --
это одно и то же, так что в InnoDB в этом смысле сомневаться
не нужно. Это на тот случай, если у вас сомнения ещё остались.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36049110
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiЁшvazhneckiPostgres не подходит, так как кешируются только индексы, для данных используется файловый кешэто Вы на глаз определили ? :)
откровенно говоря - да, так как я слабо знаком с postgres, но всё что я находил в интернете по вопросу указывало на это, если я не прав - покажите пожалуйста пальцем где почитать.
постгрес содержит shared_buffers в разделяемой памяти, он общий для всех процессов сервера и все (ну почти) операции с файлами на диске проходят через него. и абсолютно без разницы к какому файлу обращается процесс сервера, к файлу с индексами или к файлу с данными - все запросы на чтение из файла сначала ищут нужные страницы в shared_buffers и если их там нет - то они автоматически подгружаются в shared_buffers.

http://www.postgresql.org/files/documentation/books/aw_pgsql/hw_performance/node3.html
http://www.westnet.com/~gsmith/content/postgresql/InsideBufferCache.pdf (pdf презентация "Inside the PostgreSQL Shared Buffer Cache" Greg Smith 89 Килобайт)

вот пример вывода дополнения pg_buffercache показывающего содержимое shared buffers:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create table abcd(i int primary key);
insert into abcd select generate_series( 1 ,  1000 );
select relfilenode::regclass::text, * from utils_pg.pg_buffercache where relfilenode::regclass::text like '%abcd%';
 relfilenode | bufferid | relfilenode | reltablespace | reldatabase | relblocknumber | isdirty | usagecount
-------------+----------+-------------+---------------+-------------+----------------+---------+------------
 abcd_pkey   |     15866  |        98395  |           1663  |        16401  |               4  | t       |           5 
 abcd        |     15867  |        98392  |           1663  |        16401  |               3  | t       |           5 
 abcd        |     15869  |        98392  |           1663  |        16401  |               2  | t       |           5 
 abcd_pkey   |     15871  |        98395  |           1663  |        16401  |               3  | t       |           5 
 abcd_pkey   |     15872  |        98395  |           1663  |        16401  |               2  | t       |           5 
 abcd        |     15873  |        98392  |           1663  |        16401  |               1  | t       |           5 
 abcd_pkey   |     15874  |        98395  |           1663  |        16401  |               1  | t       |           5 
 abcd_pkey   |     15876  |        98395  |           1663  |        16401  |               0  | t       |           4 
 abcd        |     15877  |        98392  |           1663  |        16401  |               0  | t       |           5 
( 9  rows)

        Таблица "tt.abcd"
 Колонка |   Тип   | Модификаторы
---------+---------+--------------
 i       | integer | not null
Индексы:
    "abcd_pkey" PRIMARY KEY, btree (i)

как можно заметить - в нём есть и страницы файла данных таблицы abcd и страницы файла индексов abcd_pkey
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36049661
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftvazhneckiне могу дать ссылку на документациюТогда я дам:
read_buffer_size
read_rnd_buffer_size
не сбивайте ни меня ни других с толку, эти буферы бесполезны для кеширования данных целиком, так как они не shared
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36049830
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vazhneckiэти буферы бесполезны для кеширования данных целиком, так как они не sharedНе могу не согласиться сDimitry SibiryakovРаз есть хоть какой-то собственный кэш данных,
значит - подходит. Аффтар же - мастер формулировок...Во-первых, из "не shared" не следует обязательно "бесполезны".
Во-вторых, в вашей формулировке ничего про shared/не shared не было.
В-третьих, вообще не факт, что вам нужно "Чтобы в памяти сам процесс СУБД хранил этот кеш". Это лишь ваше видение решения задачи, а не сама задача. Может, вам вообще in-memory database нужна (если так, то The MEMORY (HEAP) Storage Engine ). А может, вообще что-то другое.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36050451
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёш
постгрес содержит shared_buffers в разделяемой памяти, он общий для всех процессов сервера и все (ну почти) операции с файлами на диске проходят через него.

из доки следует, что "операции" ограничиваются "change information on disk", т.е. чтение не положит в буфер блоки. когда я копал, так и не нашел точную формулировку, везде как-то мутно. рекомендации по размеру этого буфера тоже на водят на мысль, что он хранит только модифицированные блоки. может кто-то какой-нить ссылочкой на достоверный источник внесет ясность ?
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36051129
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!из доки следует, что "операции" ограничиваются "change information on disk", т.е. чтение не положит в буфер блоки.положит, для проверки - давайте после создания и заполнения таблицы перезапустим сервер и посмотрим что покажет pg_buffercache после seq scan'а:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
$ sudo /etc/init.d/postgresql- 8 . 3  restart
Restarting PostgreSQL  8 . 3  database server: main.

select relfilenode::regclass::text, * from utils_pg.pg_buffercache where relfilenode::regclass::text like '%abcd%';
 relfilenode | bufferid | relfilenode | reltablespace | reldatabase | relblocknumber | isdirty | usagecount
-------------+----------+-------------+---------------+-------------+----------------+---------+------------
( 0  rows)

explain analyze select * from abcd;
                                             QUERY PLAN
-----------------------------------------------------------------------------------------------------
 Seq Scan on abcd  (cost= 0 . 00 .. 14 . 00  rows= 1000  width= 4 ) (actual time= 0 . 041 .. 0 . 639  rows= 1000  loops= 1 )
 Total runtime:  1 . 076  ms
( 2  rows)

select relfilenode::regclass::text, * from utils_pg.pg_buffercache where relfilenode::regclass::text like '%abcd%';
 relfilenode | bufferid | relfilenode | reltablespace | reldatabase | relblocknumber | isdirty | usagecount
-------------+----------+-------------+---------------+-------------+----------------+---------+------------
 abcd        |       224  |        98406  |          98304  |        16401  |               0  | f       |           1 
 abcd        |       225  |        98406  |          98304  |        16401  |               1  | f       |           1 
 abcd        |       226  |        98406  |          98304  |        16401  |               2  | f       |           1 
 abcd        |       227  |        98406  |          98304  |        16401  |               3  | f       |           1 
( 4  rows)
не удивляйтесь что номер файла (relfilenode) поменялся, это потому что предыдущий пример я постил с другого сервера.

насчёт информации - да, Грег в своей презентации в заголовке так и пишет:
• This presentation comes from research done while rewriting the background writer for PostgreSQL 8.3
• There’s very little information about PostgreSQL buffer cache internals available anywhere outside of the source code

:)
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36051194
Yo.!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, так убедительней. спасибо.
...
Рейтинг: 0 / 0
СУБД с поддержкой компресии данных и индексов
    #36060303
vazhnecki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил работу InnoDB plugin. Откровенно говоря плохенько сжимает. Вроде бы и данные у меня однообразные, дамп select into file размером 2Gb сжимается в 6 раз до 330Mb, однако даже с такими данными размер innodb-plugin базы получается почему-то 2Gb. Размер же несжатой MyISAM 2.4Gb. В общем 400Mb таких извращений не стоят :)
Попробую еще поиграться с настройками plugin'а, может получится сжать сильнее..
...
Рейтинг: 0 / 0
97 сообщений из 97, показаны все 4 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / СУБД с поддержкой компресии данных и индексов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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