|
|
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Есть возможность реализовать сжатие/разжатие на стороне клиента, но тогда будет капут индексам. Грамотно это реализовать может только сама СУБД. Существуют ли такие СУБД ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2009, 23:56 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Есть еще мысль просто напросто использовать файловую систему с сжатием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 00:10 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiСуществуют ли такие СУБД ? Oracle, Firebird, Interbase. А, собственно, нафига? Не проще ли порнуху на сервере грохнуть?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 00:17 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhnecki wrote: > Грамотно это реализовать может только сама СУБД. > Существуют ли такие СУБД ? Практически все современные СУБД в том или ином виде используют сжатие в индексах ( в ключах). И наоборот, практически никто не сжимает данные. Для эффектного сжатия нужны значительные объёмы данных, которых в реляционных СУБД нет, там максимум есть одна запись, которая достаточно коротка. Так что ты этого не хочешь на самом деле (только ещё этого не понимаешь). Если же тебе надо жать C/BLOB-ы, тогда да, можно жать. Но это можно и нужно делать на клиенте, никакие индексы не пострадают, потому что C/BLOB-ы не индексируются. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 01:16 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiГрамотно это реализовать может только сама СУБД. Существуют ли такие СУБД ? MS SQL 2008 поддерживает компрессию данных, индексов и бэкапов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 08:10 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Тут не только дело в блобах. Например, использование компрессии позволяет разместить на одной странице больше записей (правда без увеличения максимального размера самой записи). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 08:13 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Sybase SA10/11 поддерживает компрессию данных на уровне отдельных таблиц. А девятая версия(если не ошибаюсь) только на уровне всей БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 09:28 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > MS SQL 2008 поддерживает компрессию данных, индексов и бэкапов. Вряд ли данных. Может только блобы. А индексы и бэкапы все сжимают. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 10:36 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
pkarklin wrote: > Тут не только дело в блобах. Например, использование компрессии > позволяет разместить на одной странице больше записей (правда без > увеличения максимального размера самой записи). Ага, и делает невозможным бинарный поиск записи на странице, например. Проходили. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 10:37 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
MasterZivВряд ли данных. Может только блобы. А индексы и бэкапы все сжимают. Компрессия применяется и к страницам данных и индексов. MasterZivАга, и делает невозможным бинарный поиск записи на странице, например. Проходили. каким образом физический формат хранения может повлиять на бинарный поиск?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 10:44 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
MasterZivАга, и делает невозможным бинарный поиск записи на странице, например. Проходили.Может стоит привести ссылки на формат, который предполагает "бинарный поиск записи на странице" ?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 13:08 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 14:22 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Если вы думаете что сжатие не имеет смысла, то вот вам смысл: Размер самой базы небольшой ~4Gb. Сжатие нужно для того, чтобы вся база поместилась в дисковом кеше - 3Gb памяти. Таким образом к диску будут обращения только для записи, что значительно снизит нагрузку на него. В данный момент все ресурсы уходят на чтение с диска, процессор загружен на 10% и не использовать сжатие в данной ситуации было бы глупо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 17:40 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiСпасибо за ответы. Если вы думаете что сжатие не имеет смысла, то вот вам смысл: авторРазмер самой базы небольшой ~4Gb. Сжатие нужно для того, чтобы вся база поместилась в дисковом кеше - 3Gb памяти. Таким образом к диску будут обращения только для записи, что значительно снизит нагрузку на него. В данный момент все ресурсы уходят на чтение с диска, процессор загружен на 10% и не использовать сжатие в данной ситуации было бы глупо :) Ой, не в ту сторону Вы копаете. Не для баз такого размера предназначено сжатие даных, реализуемых в современных СУБД. Да и поддерживается оно (как, например, в MS SQL) тока в топовых редакциях. База должна "помещаться" не в дисковом, а в буферном кэше. И... о какой СУБД идет речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 17:53 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
должна не должна, это не важно, важно что ресурсы ограничены :) Mysql сейчас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 17:58 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhnecki wrote: > данный момент все ресурсы уходят на чтение с диска, процессор загружен > на 10% и не использовать сжатие в данной ситуации было бы глупо :) Вообще-то для баз данных очень характерно, что основная нагрузка ложиться на диск. Чтение из файлов -- это хлеб СУБД, так что ничего удивительного. А все данные никогда в кэш не поместить. Если вы их сожмёте, и они влезут в память, то для разархивации память всё равно потребуется. И для архивации тоже. Не знаю, по-моему сжатие данных -- очень сомнительная фича для СУБД. Да, можно жать индексы (префиксно), можно дампы, можно блобы -- их записывают и считывают, в СУБД эти данные не обрабатываются. Всё остальное жать не имеет смысла по-моему, на уровне поего сегодняшнего понимания вещей. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 18:45 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhnecki wrote: > должна не должна, это не важно, > важно что ресурсы ограничены :) > Mysql сейчас Ресурсы СУБД всегда ограничены, а база всегда больше памяти. Иначе нет смысла использовать СУБД. Но это ещё не повод применять сжатие. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 18:46 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiMysql сейчас myisampack — Generate Compressed, Read-Only MyISAM Tables - Читали? MasterZiv... можно жать индексы (префиксно)...А вот это - увы, в MySQL отсутствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 20:23 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
MasterZivВообще-то для баз данных очень характерно, что основная нагрузка ложиться на диск. Чтение из файлов -- это хлеб СУБД, так что ничего удивительного. А все данные никогда в кэш не поместить. Если вы их сожмёте, и они влезут в память, то для разархивации память всё равно потребуется. И для архивации тоже. Не знаю, по-моему сжатие данных -- очень сомнительная фича для СУБД. Да, можно жать индексы (префиксно), можно дампы, можно блобы -- их записывают и считывают, в СУБД эти данные не обрабатываются. Всё остальное жать не имеет смысла по-моему, на уровне поего сегодняшнего понимания вещей.Т.е. уменьшить IO за счёт CPU - это сомнительная фича ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 21:08 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladТ.е. уменьшить IO за счёт CPU - это сомнительная фича ?Если база работает не только на чтение, но и на запись (а именно в рассчете на это и разрабатывается большинство СУБД), то вероятность уменьшения IO, имхо, сильно сокращается. А вот потребление CPU может возрасти очень значительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 21:19 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
IMHO Компрессия эффективна только для всяких DWH приложений с денормализацией и большим размером блока (там есть где разгулятся) vazhnecki должна не должна, это не важно, важно что ресурсы ограничены :) Стоимость ресурсов куда меньше, чем стоимость времени специалиста для создания/поддержки вашего велосипеда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 21:24 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Друзья, пользу или бесполезность сжатия можно обсуждать сколько угодно. Здесь же хотелось бы получить максимум информации по СУБД которые уже владеют такой фичей. Вот смотрю у DB2 есть способность сжимать как данные так и индексы, но цена .. Кстати из бесплатных есть такие ? .. Postgresql вот умеет сжимать данные но не индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 21:31 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksoft, myisampack К сожалению она ReadOnly, хоть это и можно кое-как обойти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 21:34 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
SERG1257 Стоимость ресурсов куда меньше, чем стоимость времени специалиста для создания/поддержки вашего велосипеда. правда ? а вы пробовали добавить к dedicated серверу пару гигов памяти ? ну вот идите уточните цены, а потом будем спорить :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 21:37 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksofthvladТ.е. уменьшить IO за счёт CPU - это сомнительная фича ?Если база работает не только на чтение, но и на запись (а именно в рассчете на это и разрабатывается большинство СУБД)Обычно операций чтения таки больше, чем операций записи. А часто - намного больше. miksoftто вероятность уменьшения IO, имхо, сильно сокращается.Почему ? И почему вероятность ? miksoftА вот потребление CPU может возрасти очень значительно.Это очень зависит от схемы компрессии. Понятно, что rar и даже менее ресурсоёмкий zip никто не встраивает в СУБД (разве что в очень специальных случаях). Необходимо также учитывать то, что мощность CPU растёт гораздо быстрее скорости дисковых систем. Может быть SSD что-то изменит, но пока что оно не годится для массового применения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 22:27 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiКстати из бесплатных есть такие ? .. Postgresql вот умеет сжимать данные но не индексы.Firebird Но нужно понимать, что у версионников в записи присутствует немаленький заголовок. Сжатие данных в Firebird служит в основном для удаления хвостовых пробелов в строках, сжимается каждая запись сама-по-себе, рекордных показателей тут нет. Бекверсии тоже чаще всего представлены в виде достаточно компактных дельт. А вот индексы в FB жмутся очень хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 22:32 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladmiksoftто вероятность уменьшения IO, имхо, сильно сокращается.Почему ? И почему вероятность ? miksoftА вот потребление CPU может возрасти очень значительно.Это очень зависит от схемы компрессии. Понятно, что rar и даже менее ресурсоёмкий zip никто не встраивает в СУБД (разве что в очень специальных случаях). Необходимо также учитывать то, что мощность CPU растёт гораздо быстрее скорости дисковых систем. Может быть SSD что-то изменит, но пока что оно не годится для массового применения.Насколько я вижу по статистике ваших постов, вы работаете с InterBase и/или Firebird. Вот на их примере и покажите, плиз, выполнение операции апдейта одной записи в сжатой таблице таким образом, чтобы это дало и практическое сокращение IO для этого апдейта, и неувеличение такового для последующих чтений этой же записи. "Схему компрессии" придумайте/выберите на свой вкус. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 22:40 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladА вот индексы в FB жмутся очень хорошо.Жмутся как именно? префиксно или а-ля zip ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 22:44 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksoftНасколько я вижу по статистике ваших постов, вы работаете с InterBase и/или FirebirdВыделенное - неправильно. Правильно: "Вы работаете НАД..." ;))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 22:45 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Senya_LmiksoftНасколько я вижу по статистике ваших постов, вы работаете с InterBase и/или FirebirdВыделенное - неправильно. Правильно: "Вы работаете НАД..." ;)))Прошу простить, был не в курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 22:46 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksoftВот на их примере и покажите, плиз, выполнение операции апдейта одной записи в сжатой таблице таким образом, чтобы это дало и практическое сокращение IO для этого апдейта, и неувеличение такового для последующих чтений этой же записи. "Схему компрессии" придумайте/выберите на свой вкус.А зачем это мне нужно ? PS Подумайте ещё раз над моим предыдущим сообщением, нет в Firebird'е никаких "сжатых таблиц". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 23:06 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksofthvladА вот индексы в FB жмутся очень хорошо.Жмутся как именно? префиксно или а-ля zip ?Префиксная компрессия ключей плюс отбрасывание хвостовых пробелов строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 23:10 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladА зачем это мне нужно ? Чтобы понять "почему вероятность". hvladPS Подумайте ещё раз над моим предыдущим сообщением, нет в Firebird'е никаких "сжатых таблиц".А я и не говорил, что они там есть. Я лишь попросил предложить "схему компрессии", которая дала бы вероятность (а лучше - уверенность) сокращения IO на примере Firebird-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 23:13 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladmiksofthvladА вот индексы в FB жмутся очень хорошо.Жмутся как именно? префиксно или а-ля zip ?Префиксная компрессия ключей плюс отбрасывание хвостовых пробелов строк.Тогда это тоже "с некоторой вероятностью". Уникальное (или близкое к тому) поле в начало индекса и вся компрессия сразу исчезает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 23:16 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksofthvladА зачем это мне нужно ? Чтобы понять "почему вероятность".Я совершенно не понимаю, что вы мне хотите сказать miksofthvladPS Подумайте ещё раз над моим предыдущим сообщением, нет в Firebird'е никаких "сжатых таблиц".А я и не говорил, что они там есть. Я лишь попросил предложить "схему компрессии", которая дала бы вероятность (а лучше - уверенность) сокращения IO на примере Firebird-а.В Firebird'е нет разных схем хранения записей. Соответственно невозможно, не трогая исходников, сравнить IO с и без сжатия записей. Так что всё, что вам остаётся - поверить мне, или привести обоснование (лучше практический пример) того, что сжатие может увеличить IO. Ещё можно закончить этот разговор, оставшись при своих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 23:40 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksofthvladПрефиксная компрессия ключей плюс отбрасывание хвостовых пробелов строк.Тогда это тоже "с некоторой вероятностью". Уникальное (или близкое к тому) поле в начало индекса и вся компрессия сразу исчезает.С чего бы это ? Или спорим о вкусе устриц с тем, кто их ест ? Берёте свою любимую таблицу и индексы из той СУБД, в которой вы работаете, переносите её в Firebird, снимаете статистику и смотрите на кол-во страниц под данные и индексы, средний р-р записи и ключа индекса, сравниваете с оригиналом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2009, 23:43 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvlad wrote: > Т.е. уменьшить IO за счёт CPU - это сомнительная фича ? Нет. Но думаю не получится. В общем случае. В каких-то частностях ещё может быть (типа read-only БД, или ещё какая-то экзотика). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 00:34 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
SERG1257 wrote: > Компрессия эффективна только для всяких DWH приложений с денормализацией > и большим размером блока (там есть где разгулятся) Ну, да, вот тут соглашусь. Там ещё хранение по колонкам может помочь сильно -- в колонах как правило данные сильно повторяются, там из них словари удобно делать. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 00:36 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladВ Firebird'е нет разных схем хранения записей.Первоначально я просил "придумать" возможную схему компрессии. Если вас так сбивает слово "Firebird", то вычеркните его и замените на "некую асбстрактную СУБД". hvladТак что всё, что вам остаётся - поверить мне, или привести обоснование (лучше практический пример) того, что сжатие может увеличить IO.Пример: Допустим, есть сжатый по zip-образномуалгоритму логический блок таблицы. Он размещается целиком в физическом блоке меньшего размера. Происходит апдейт записи в этом блоке. Новые данные (пусть даже той же "несжатой" длины) перестают умещаться в один физический блок и надо писать уже два блока. Причем либо один на прежнем месте, второй на новом, либо оба на новом. Думаю, накладные расходы в обоих случаях можете себе представить. hvladЕщё можно закончить этот разговор, оставшись при своих.Видимо, так и придется поступить... по крайней мере, на сегодня... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 00:36 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksoft wrote: > Жмутся как именно? префиксно или а-ля zip ? Да префиксно, конечно. как ещё можно сжать индекс ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 00:38 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladmiksofthvladПрефиксная компрессия ключей плюс отбрасывание хвостовых пробелов строк.Тогда это тоже "с некоторой вероятностью". Уникальное (или близкое к тому) поле в начало индекса и вся компрессия сразу исчезает.С чего бы это ?На всякий случай уточню, что термин "Префиксная компрессия ключей" я понимаю в том виде, в каком он существует в Оракле. Возможно, это не совпадает с Firebird-ным варинатом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 00:39 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksoft Новые данные (пусть даже той же "несжатой" длины) перестают умещаться в один физический блок и надо писать уже два блока. Причем либо один на прежнем месте, второй на новом, либо оба на новом. Думаю, накладные расходы в обоих случаях можете себе представить. Ок, представляем. Напоминаю, что сравнение идёт со случаем несжатых данных, в котором придётся писать уже не два, а как минимум три блока (поскольку ни старые данные, ни новые в один блок не помещаются - это Ваши условия задачи). Т.е. на Вашем примере компрессия даёт от 33 до 50% экономии времени ввода-вывода. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 01:00 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksofthvladВ Firebird'е нет разных схем хранения записей.Первоначально я просил "придумать" возможную схему компрессии. Если вас так сбивает слово "Firebird", то вычеркните его и замените на "некую асбстрактную СУБД".А зачем мне что-то придумывать, когда я точно знаю как это работает в Firebird ? Остальные СУБД меня интересуют только в плане более эффективных реализаций... miksoftПример: Допустим, есть сжатый по zip-образномуалгоритму логический блок таблицы. Он размещается целиком в физическом блоке меньшего размера. Происходит апдейт записи в этом блоке. Новые данные (пусть даже той же "несжатой" длины) перестают умещаться в один физический блок и надо писать уже два блока. Причем либо один на прежнем месте, второй на новом, либо оба на новом. Думаю, накладные расходы в обоих случаях можете себе представить.Вы упоминаете zip-образный алгоритм, но не понятно к чему это. Cжатые записи будут реже выходить за границы физ. страницы при апдейтах, чем несжатые т.к. каждая сжатая запись занимает меньше места. Это нужно доказывать ? На самом деле в Firebird при апдейте создаётся новая версия записи и дельта между нею и старой версией, так что реальные процессы сложнеео описать в 2-х словах, во всяком случае я не собираюсь это тут делать. Или вы о хранении записей с фиксированной длиной говорите, как в dbf ? В этом случае смешно даже сравнивать Я не могу себе представить, почему обе страницы (старую и новую) нужно писать на новом месте. В любом случае это не влияет на кол-во IO writes - в обоих случаях нужно писать 2 страницы. В том что вы написали я не вижу обоснования - почему сжатие увеличит IO ? Возможно вы имеете в виду какое-то специфическое сжатие ? Я выше описал, как это происходит в Firebird. miksofthvladЕщё можно закончить этот разговор, оставшись при своих.Видимо, так и придется поступить... по крайней мере, на сегодня...Не возражаю. И на завтра тоже :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 01:09 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovОк, представляем. Напоминаю, что сравнение идёт со случаем несжатых данных, в котором придётся писать уже не два, а как минимум три блока (поскольку ни старые данные, ни новые в один блок не помещаются - это Ваши условия задачи). Т.е. на Вашем примере компрессия даёт от 33 до 50% экономии времени ввода-вывода. Почему три? Храниться те же записи будут в двух блоках, а записать достаточно будет один блок, тот в котором находится изменяемая запись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 01:11 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksofthvladmiksoftУникальное (или близкое к тому) поле в начало индекса и вся компрессия сразу исчезает.С чего бы это ?На всякий случай уточню, что термин "Префиксная компрессия ключей" я понимаю в том виде, в каком он существует в Оракле. Возможно, это не совпадает с Firebird-ным варинатом.Если хотите, покажите на реальном примере компрессию ключей в индексе Оракла, а я покажу как это будет выглядеть в Firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 01:11 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladCжатые записи будут реже выходить за границы физ. страницы при апдейтахИмхо, в общем случае - неочевидно, сильно зависит от характера данных. hvladИли вы о хранении записей с фиксированной длиной говорите, как в dbf ?Нет, конечно. Видимо, каждый из нас думает в свой пространстве умолчаний, отличном от такового у других :) hvladЯ не могу себе представить, почему обе страницы (старую и новую) нужно писать на новом месте. В любом случае это не влияет на кол-во IO writes - в обоих случаях нужно писать 2 страницы.Например, потому, что одна многоблочная операция дешевле, чем несколько одноблочных при равном количестве блоков. hvladВ том что вы написали я не вижу обоснования - почему сжатие увеличит IO ?Изначально вопрос вами был поставлен так:hvladmiksoftто вероятность уменьшения IO, имхо, сильно сокращается.Почему ? И почему вероятность ?слово "увеличит" не вижу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 01:23 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksoftПочему три? Потому что я неверно прочитал условия. Для меня "логический блок" это ровно одна запись, в то время как Вы говорите о большом их количестве. Влад, я, кажется, понял, что нам пытается miksoft объяснить. Смотри: происходит update записи данными, которые сжимаются не так хорошо как предыдущие и при этом на странице уже нет резерва места . Что при этом произойдёт: Firebird - сплит страницы, запись двух страниц данных; Oracle без сжатия - сплита нет, запись двух страниц (данные+лог); Oracle со сжатием - сплит и запись трёх страниц (две данных+лог); DBASE (сжатия нет по определению) - сплита нет, запись одной страницы. Вот только что это доказывает? Что однопользовательский DBASE быстрее многопользовательских серверов? Так это как бы общеизвестно... Что в этом (наихудшем) сценарии Oracle проигрывает? Так сейчас прибежит Ё и скажет, что это фигня и sparse write всё компенсирует. И, собственно, именно поэтому сжатие в Оракуле опционально и по умолчанию выключено. Нет, конечно, он может сказать, что DBASE (в своей FoxPro ипостаси) бывает многопользовательским, но согласно учению eugenkru, для обеспечения snapshot на нём приходится использовать буферные таблицы, что увеличивает количество ввода-вывода при чтении в N раз, где N = числу пользователей. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 12:03 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
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+...)? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 12:07 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 12:18 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Так сейчас прибежит Ё и скажет, что это фигня и sparse write всё компенсирует. И, собственно, именно поэтому сжатие в Оракуле опционально и по умолчанию выключено не угадал, я скажу что конкретно фанатики ФБ могут отключить писанину лога и жить счастливо без него, почти также как они живут на ФБ. раз даже на своих ошибках они не учатся - это будет вполне здравый совет. Dimitry SibiryakovНет, конечно, он может сказать, что DBASE (в своей FoxPro ипостаси) бывает многопользовательским, но согласно учению eugenkru, для обеспечения snapshot на нём приходится использовать буферные таблицы, что увеличивает количество ввода-вывода при чтении в N раз, где N = числу пользователей. чем вызвана сия фантазия ? буферизация у фокспро на клиенте происходит и снепшот там при всем желании ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 13:46 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
kdv wrote: > Теперь, *варианты сжатия ключей*, последовательно: > *1*. не хранить концевые пробелы для строк, или записывать кол-во > концевых пробелов. Для чисел - убирать "лишние" нули. > > *2*. префиксное сжатие следующего ключа на основании значения > предыдущего. Например, есть ключи "Иванов и "Иванова". При сжатии во > втором ключе мы напишем "6а" > > *3*. для одинаковых ключей вообще их не хранить, а формировать список > номеров записей для конкретного ключа. Например есть Это всё я бы не подразумевал под "сжатием данных". Это -- детский сад, приёмы, которые используют все более-менее современные СУБД. Это не интересно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 13:59 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто всё я бы не подразумевал под "сжатием данных". Это -- детский сад, приёмы, которые используют все более-менее современные СУБД. Это не интересно. гм. а на мой взгляд "нефиксированный" размер записи - это уже сжатие, я результат привел. По поводу "все более-менее" - мы уже в курсе что Оракл как-то сжимает, но у него это по умолчанию отключено. Посмотрите у себя размер уникального индекса по integer. я дал пример для ФБ что сжатие примерно 0.64 (именно для уникального). Давайте сравним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 14:05 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.! не угадал, я скажу что конкретно фанатики ФБ могут отключить писанину лога и жить счастливо без него, почти также как они живут на ФБ. Вот только у Оракула вместе с логом отпадёт и версионность... Кому сдался Оракул без версионности?.. Писатели, блокирующие читателей это прошлый век. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 14:23 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovВот только у Оракула вместе с логом отпадёт и версионность...Подробнее, пжлста, что там и где у него отпадет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 15:23 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Оракул ЛоговичПодробнее, пжлста, что там и где у него отпадет? Ё предлагает отключить undo log. А разве не в нём Оракул держит версии записей для выдачи запросам, заинтересованным в несвежих данных? И разве не из-за его переполнения вылазит "Snapshot is too old"?.. А?.. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 16:04 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЁ предлагает отключить undo log. А разве не в нём Оракул держит версии записей для выдачи запросам, заинтересованным в несвежих данных? И разве не из-за его переполнения вылазит "Snapshot is too old"?.. А?.. 1) В Oracle нет "undo log" как отдельного журнала в его обычном понимании Если где-то в документации этот термин и употребляется, то по слабоумию ее авторов 2) Отключить использование undo нельзя. Никак. 3) Версионность у Oracle не может отпасть. Никак. Никогда. Это не яйца ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 16:18 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Оракул Логович 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 16:31 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Теперь Оракул хранит версии в таком же тейблспейсе, как и данные. Что не меняет факта, что ему приходится записывать туда старые данные при update. Значит в моём сообщении "+лог" следует читать как "+undo tablespace". Что, впрочем, не проясняет того факта, что же именно Ё предлагал отключить. в оракле есть один лог - REDO. а ваше сообщения боюсь не следует читать и в новой редакции, т.к. они становятся еще более бредовым, чем предыдущее. или вы на полном серьезе считаете, что снапшот ФБ абсолютно бесплатен ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 17:02 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.! или вы на полном серьезе считаете, что снапшот ФБ абсолютно бесплатен ? Нет, но Оракулу его сжатие обходится дороже. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 17:27 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Нет, но Оракулу его сжатие обходится дороже. крокодил более зеленый чем длинный, пожалуй это самая здравая ваша мысль в ветке действительно сжатие блоков в оракле обходится дороже поддержки версионности ФБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 17:36 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovмои знания семёрки можно сливать в канализациюОчень что-то я сомневаюсь в этих "знаниях семерки", ибо сегменты отката (rollback segments) существовали и в Oracle 7, и гораздо раньше :) Dimitry SibiryakovТеперь Оракул хранит версии в таком же тейблспейсе, как и данные.Он это делал и раньше, начиная с версии 4, 1984 год. Просто начиная с 9i альтернативой "управляемым вручную" rollback segments являются "управляемые автоматически" undo segments. По сути это практически одно и то же. То есть никогда Oracle данные undo не хранил ни в каких специальных журналах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 18:23 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
2 Dimitry Sibiryakov Воздержитесь от опрометчивых заявлений. По теме топика - если что-то хорошо сжимается, то это повод подумать об дизайне базы, ибо нормализация суть компрессия (маленький ID взамен большой строки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 18:33 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 19:08 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Оракле производит три записи на диск там, где DBASE хватает одного. эт тонко подмечено, пол транзакции на оракле ну никак не записать. имхо фокс единственный кто не способен обеспечить атомарность транзакции. поэтому к примеру ФБ придется два раза модифицировать TIP, а потом еще за чужими старые версии строк подтирать, поэтому ФБ так проигрывает ораклу в и/о, не смотря на дефолтную компрессию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 20:41 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.!к примеру ФБ придется два раза модифицировать TIP, а потом еще за чужими старые версии строк подтиратьЁ выучило новое слово (TIP) ? Но, как всегда, не поняло что это и зачем :( Первое утверждение (о TIP) совершенно не верно (если речь всё ещё идёт о апдейте записи), ибо TIP модифицируется только при коммите. Второе (о подтирать чужие версии) тоже не соответствует действительности. Ибо на версии других записей никто не смотрит, а бекверсии обновляемой записи могут удаляться или сразу, или в фоне. Да, ещё, - удаление бекверсии версии записи может и не приводить к дополнительному IO совсем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 20:51 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvlad Первое утверждение (о TIP) совершенно не верно (если речь всё ещё идёт о апдейте записи), ибо TIP модифицируется только при коммите. ну прям заинтриговал, может пояснишь подробней как активный статус транзакции прописывается в TIP при коммите ? hvladВторое (о подтирать чужие версии) тоже не соответствует действительности. Ибо на версии других записей никто не смотрит, а бекверсии обновляемой записи могут удаляться или сразу, или в фоне. а может это дворник злой (С) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 21:41 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.!hvlad Первое утверждение (о TIP) совершенно не верно (если речь всё ещё идёт о апдейте записи), ибо TIP модифицируется только при коммите. ну прям заинтриговал, может пояснишь подробней как активный статус транзакции прописывается в TIP при коммите ?При коммите прописывается статус committed, как ни странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 21:49 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladПри коммите прописывается статус committed, как ни странно. невероятно, точно что ли ? а когда все таки статус active прописывается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 21:58 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.!hvladПри коммите прописывается статус committed, как ни странно. невероятно, точно что ли ? а когда все таки статус active прописывается ?TIP инициализируется так, что все тр-ции на нём имеют статус active. Т.е. это происходит не при старте каждой тр-ции, а один раз при создании новой TIP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 22:26 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladTIP инициализируется так, что все тр-ции на нём имеют статус active. Т.е. это происходит не при старте каждой тр-ции, а один раз при создании новой TIP. а данные транзакции в TIP значится магическим путем попадают ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 22:55 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.!hvladTIP инициализируется так, что все тр-ции на нём имеют статус active. Т.е. это происходит не при старте каждой тр-ции, а один раз при создании новой TIP. а данные транзакции в TIP значится магическим путем попадают ?Какие именно данные ? Может кроме самого слова "TIP" нужно было ещё что-то прочитать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 23:23 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladКакие именно данные ? Может кроме самого слова "TIP" нужно было ещё что-то прочитать ? мусье решил прикинутся лаптем, что ж, мы таких любим и ценим. вспоминая анедот об анкетировании новых русских зададим вопрос так: уж не при старте транзакции данные об активном статусе транзакции прописываются в TIP ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 23:35 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.!hvladКакие именно данные ? Может кроме самого слова "TIP" нужно было ещё что-то прочитать ? уж не при старте транзакции данные об активном статусе транзакции прописываются в TIP ?НЕТ. Читай выше до прояснения. И заодно расскажи - что, по твоему, есть "данные об активном статусе транзакции" ? PS Насчёт лаптя я записал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 23:43 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvladНЕТ. Читай выше до прояснения. И заодно расскажи - что, по твоему, есть "данные об активном статусе транзакции" ? PS Насчёт лаптя я записал... именно так. при старте данные о транзакции со статусом active прописываются в TIP именно это позволяет в случае падения сервера вычислить транзакции которые необходимо откатить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2009, 23:53 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
чтоб не быть голословным. 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2009, 00:07 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.!hvladНЕТ. Читай выше до прояснения. И заодно расскажи - что, по твоему, есть "данные об активном статусе транзакции" ? PS Насчёт лаптя я записал... именно так. при старте данные о транзакции со статусом active прописываются в TIP именно это позволяет в случае падения сервера вычислить транзакции которые необходимо откатить. При старте тр-ции обновляется header page, но никак не TIP. Надень очки и найди слово write в приведенной цитате. Давай-ка ты не будешь учить меня где в моём доме что лежит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2009, 00:41 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
hvlad При старте тр-ции обновляется header page, но никак не TIP. Надень очки и найди слово write в приведенной цитате. Давай-ка ты не будешь учить меня где в моём доме что лежит... придется учить, тебя собственно уж и не в первой. хорошо, пусть в цитате это header page, но повторяю, кроме модификации хеадера модифицируется TIP, где как минимум прописывается активный статус новой транзакции. именно по этой записи после краша сервера определяются активные транзакции в момент краха, которые необходимо откатить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2009, 00:51 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yo.!hvlad При старте тр-ции обновляется header page, но никак не TIP. Надень очки и найди слово write в приведенной цитате. Давай-ка ты не будешь учить меня где в моём доме что лежит... придется учить, тебя собственно уж и не в первой. хорошо, пусть в цитате это header page, но повторяю, кроме модификации хеадера модифицируется TIP, где как минимум прописывается активный статус новой транзакции. именно по этой записи после краша сервера определяются активные транзакции в момент краха, которые необходимо откатить.Можешь повторять хоть до посинения, TIP от этого не станет обновляться при старте тр-ции. Если будешь паинькой, расскажу как на самом деле после краша сервера определяются незакоммиченные в момент сбоя тр-ции. Которые, кстати, не нужно откатывать при старте сервера, в отличие от. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2009, 00:59 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Yoмодифицируется TIP, где как минимум прописывается активный статус новой транзакции. да не модифицируется TIP, ну чего нести фигню какую-то. в TIP каждая транзакция имеет 4 состояния 0 - active. НОЛЬ. Поэтому прописывать ничего не надо. Если Next увеличился, то в искомом номере активной транзакции будет НОЛЬ. А ноль этот записывается туда целиком во всю страницу tip при ее создании. 1 - committed 2 - rolled back 3 - limbo Yoименно по этой записи после краша сервера определяются активные транзакции в момент краха именно, именно. Папа у Васи силен в математике, но не знает как интерпретировать 0? Чего надо обзательно какие-то бредовые идеи придумывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2009, 11:18 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Вопрос по теме: подскажите UNIX open source СУБД которая умеет создавать и использовать буффер для не только для индексов но и для данных ? Чтобы в памяти сам процесс СУБД хранил этот кеш. Смысл в том, что обязательно нужно полностью отказаться от файлового системного кеша. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2009, 20:58 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiподскажите UNIX open source СУБД которая Все. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2009, 21:09 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Все. Имхо, MySQL сюда подходит лишь с натяжкой, т.к. большинство буферов у него индивидуальны для каждой сессии и имеют довольно небольшой размер по-умолчанию, и, как следствие, их эффективность невысока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2009, 21:36 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksoftИмхо, MySQL сюда подходит лишь с натяжкой Натяжка, не натяжка... Раз есть хоть какой-то собственный кэш данных, значит - подходит. Аффтар же - мастер формулировок... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2009, 22:26 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Сформулировал я чётко, видимо вы не знаете о чем речь, поэтому не понятно. mysql с MyIsam не подходит - кеширует только индексы, подходит с InnoDB, но кушает уж очень много места (это важно) Postgres не подходит, так как кешируются только индексы, для данных используется файловый кеш Про Firebird, MaxDB, Ingres нет данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2009, 23:09 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiPostgres не подходит, так как кешируются только индексы, для данных используется файловый кешэто Вы на глаз определили ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2009, 03:21 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiСформулировал я чётко, видимо вы не знаете о чем речь, поэтому не понятно. mysql с MyIsam не подходит - кеширует только индексы, подходит с InnoDB, но кушает уж очень много места (это важно)Можете процитировать документацию или дать ссылку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2009, 08:52 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiподходит с InnoDB, но кушает уж очень много места (это важно) Используйте innodb plugin и формат Barracuda а не "антелопа". Он намного компактнее сам по себе и еще кстати и компрессию поддерживает ROW_FORMAT=COMPRESSED Вот вам дока ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2009, 11:23 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Ёш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." Хрен - интересная информация, спасибо за неё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2009, 15:43 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2009, 15:51 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhnecki wrote: > посмотрев настройки mysqld для myisam (большинство по умолчанию для > него), вы не найдёте там настройки буфера для страниц данных, есть > только буфер key_buffer для индексов. Вот например фраза с Я хочу напомнить или указать, что для InnoDB данные и индексы -- это одно и то же, так что в InnoDB в этом смысле сомневаться не нужно. Это на тот случай, если у вас сомнения ещё остались. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2009, 17:06 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2009, 17:52 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
miksoftvazhneckiне могу дать ссылку на документациюТогда я дам: read_buffer_size read_rnd_buffer_size не сбивайте ни меня ни других с толку, эти буферы бесполезны для кеширования данных целиком, так как они не shared ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2009, 01:44 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
vazhneckiэти буферы бесполезны для кеширования данных целиком, так как они не sharedНе могу не согласиться сDimitry SibiryakovРаз есть хоть какой-то собственный кэш данных, значит - подходит. Аффтар же - мастер формулировок...Во-первых, из "не shared" не следует обязательно "бесполезны". Во-вторых, в вашей формулировке ничего про shared/не shared не было. В-третьих, вообще не факт, что вам нужно "Чтобы в памяти сам процесс СУБД хранил этот кеш". Это лишь ваше видение решения задачи, а не сама задача. Может, вам вообще in-memory database нужна (если так, то The MEMORY (HEAP) Storage Engine ). А может, вообще что-то другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2009, 09:07 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Ёш постгрес содержит shared_buffers в разделяемой памяти, он общий для всех процессов сервера и все (ну почти) операции с файлами на диске проходят через него. из доки следует, что "операции" ограничиваются "change information on disk", т.е. чтение не положит в буфер блоки. когда я копал, так и не нашел точную формулировку, везде как-то мутно. рекомендации по размеру этого буфера тоже на водят на мысль, что он хранит только модифицированные блоки. может кто-то какой-нить ссылочкой на достоверный источник внесет ясность ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2009, 12:29 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
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. насчёт информации - да, Грег в своей презентации в заголовке так и пишет: • 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 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2009, 15:59 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
да, так убедительней. спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.06.2009, 16:19 |
|
||
|
СУБД с поддержкой компресии данных и индексов
|
|||
|---|---|---|---|
|
#18+
Проверил работу InnoDB plugin. Откровенно говоря плохенько сжимает. Вроде бы и данные у меня однообразные, дамп select into file размером 2Gb сжимается в 6 раз до 330Mb, однако даже с такими данными размер innodb-plugin базы получается почему-то 2Gb. Размер же несжатой MyISAM 2.4Gb. В общем 400Mb таких извращений не стоят :) Попробую еще поиграться с настройками plugin'а, может получится сжать сильнее.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2009, 17:17 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1552925]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
101ms |
get tp. blocked users: |
2ms |
| others: | 232ms |
| total: | 423ms |

| 0 / 0 |
