powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / index и data на разных дисках
39 сообщений из 39, показаны все 2 страниц
index и data на разных дисках
    #39389675
index_data
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всегда был уверен, что для распределения IO индексы и данные нужно хранить на разных лунах. Сам оракл так рекомендует. Однако вот читаю https://docs.oracle.com/cd/E18283_01/server.112/e16638/iodesign.htm

Код: plsql
1.
2.
3.
4.
5.
One popular approach to manual I/O distribution suggests separating a frequently used table from its index. 
This is not correct. During the course of a transaction, the index is read first, and then the table is read. 
Because these I/Os occur sequentially, the table and index can be stored on the same disk without contention. 
It is not sufficient to separate a data file simply because the data file contains indexes or table data. 
The decision to segregate a file should be made only when the I/O rate for that file affects database performance.



И ведь действительно, вначале читается индекс, потом уже читается данные. То есть запросы не мешают друг другу,
даже помагают, если вместе с индексом в кэш попал еще нужный блок с данными.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390043
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
index_data если вместе с индексом в кэш попал еще нужный блок с данными.
Как писали Лаконяне в ответ царю Македонскому - Если.

В наше время когда все верят в черные коробочки с неонкой внутре этот совет (про хранение порознь) уже не в тренде. Сейчас модно умные хранилища, которые сами догадываются "Чё те надо". И фильтруют запросы сами на уровне блоков.

А так палка о двух концах. С одной стороны разнося операции по разным каналам ты делаешь так, чтобы они не мешали друг другу. С другой стороны не давая раскидать одну большую операцию по куче каналов ты не даешь закончится ей быстрее.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390044
Фотография Vivat!San
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iopsы обеспечьте и кладите вместе.
А по поводу Ваших рассуждений - Вы остальным сессиям запретите одновременно использовать ту же таблицу или индекс?
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390409
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько соображений:
Если это, скажем разные LUN-ы в одной RAID-группе или вообще на одном диске, или одна ASM-группа, то с физической стороны выигрыша, конечно, нет.
Но с другой стороны (здесь я больше ратую за отделение таблиц и индексов в разных ТП ):
-- Во-первых, это красиво
-- Во-вторых, если это физически разное железо -- пока одна сессия читает индекс, другая (уже прочитав индекс) обращается к таблице, не мешая первой
-- ты можешь мониторить нагрузку на конкретный доступ к индексам/табличкам и, возможно, куда-то что-то попередвигать. Можно, конечно, это делать через SEGMENT_STATISTICS, но это таки не столь наглядно.
-- можно задать разные параметров ТП, например, для индексов UNIFORM SIZE 1M, а для табличек 8M. Всякие там дефолтовые PCTFREE разные. Опять же, конечно, большую часть этого можно сделать и на уровне конкретных сегментов, но опять же, не столь красиво
-- (хоть здесь и ругают этот подход) можно сделать разный размер блоков. Например, для больших широких табличек 16k, а индексов к ним -- 8k, а то и 2k
-- некоторые считают, что для табличек нужно использовать RAID с защитой (зеркало или RAID-5, 6 и т.д), а для индексов хватит и страйпа. И/или вообще не бэкапить индексы. А в случае чего пересоздать. На мой взгляд, зависит от размера табличек и времени, которое можно себе позволить на пересоздание, но такие мысли я тоже слышал
-- ...
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390447
index_data
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровНесколько соображений:
Если это, скажем разные LUN-ы в одной RAID-группе или вообще на одном диске, или одна ASM-группа, то с физической стороны выигрыша, конечно, нет.
Но с другой стороны (здесь я больше ратую за отделение таблиц и индексов в разных ТП ):
-- Во-первых, это красиво
-- Во-вторых, если это физически разное железо -- пока одна сессия читает индекс, другая (уже прочитав индекс) обращается к таблице, не мешая первой
-- ты можешь мониторить нагрузку на конкретный доступ к индексам/табличкам и, возможно, куда-то что-то попередвигать. Можно, конечно, это делать через SEGMENT_STATISTICS, но это таки не столь наглядно.
-- можно задать разные параметров ТП, например, для индексов UNIFORM SIZE 1M, а для табличек 8M. Всякие там дефолтовые PCTFREE разные. Опять же, конечно, большую часть этого можно сделать и на уровне конкретных сегментов, но опять же, не столь красиво
-- (хоть здесь и ругают этот подход) можно сделать разный размер блоков. Например, для больших широких табличек 16k, а индексов к ним -- 8k, а то и 2k
-- некоторые считают, что для табличек нужно использовать RAID с защитой (зеркало или RAID-5, 6 и т.д), а для индексов хватит и страйпа. И/или вообще не бэкапить индексы. А в случае чего пересоздать. На мой взгляд, зависит от размера табличек и времени, которое можно себе позволить на пересоздание, но такие мысли я тоже слышал
-- ...

Еще такой упрощенный вариант в пользу разделения. Есть 2 диска и 2 варианта размещения данных. Первый вариант - данные на диск 1, индекс на диск 2. Второй вариант - данные и индекс на страйп дисков 1+2.

Продолжаем упрощение. 2 сессии читают одновременно данные и индекс. В первом варианте получаем два IO на диск 1 и два IO на диск 2. Во втором варианте все зависит от физического размещения. Если окажется, что данные индекса и данных находятся на одном физическом диске, тогда будет четыре IO на диск 1 и ноль IO на диск 0. То есть в таком случае запросы будут проходить дольше на разницу в 2 IO.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390705
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
index_dataВячеслав ЛюбомудровНесколько соображений:
Если это, скажем разные LUN-ы в одной RAID-группе или вообще на одном диске, или одна ASM-группа, то с физической стороны выигрыша, конечно, нет.
Но с другой стороны (здесь я больше ратую за отделение таблиц и индексов в разных ТП ):
-- Во-первых, это красиво
-- Во-вторых, если это физически разное железо -- пока одна сессия читает индекс, другая (уже прочитав индекс) обращается к таблице, не мешая первой
-- ты можешь мониторить нагрузку на конкретный доступ к индексам/табличкам и, возможно, куда-то что-то попередвигать. Можно, конечно, это делать через SEGMENT_STATISTICS, но это таки не столь наглядно.
-- можно задать разные параметров ТП, например, для индексов UNIFORM SIZE 1M, а для табличек 8M. Всякие там дефолтовые PCTFREE разные. Опять же, конечно, большую часть этого можно сделать и на уровне конкретных сегментов, но опять же, не столь красиво
-- (хоть здесь и ругают этот подход) можно сделать разный размер блоков. Например, для больших широких табличек 16k, а индексов к ним -- 8k, а то и 2k
-- некоторые считают, что для табличек нужно использовать RAID с защитой (зеркало или RAID-5, 6 и т.д), а для индексов хватит и страйпа. И/или вообще не бэкапить индексы. А в случае чего пересоздать. На мой взгляд, зависит от размера табличек и времени, которое можно себе позволить на пересоздание, но такие мысли я тоже слышал
-- ...

Еще такой упрощенный вариант в пользу разделения. Есть 2 диска и 2 варианта размещения данных. Первый вариант - данные на диск 1, индекс на диск 2. Второй вариант - данные и индекс на страйп дисков 1+2.

Продолжаем упрощение. 2 сессии читают одновременно данные и индекс. В первом варианте получаем два IO на диск 1 и два IO на диск 2. Во втором варианте все зависит от физического размещения. Если окажется, что данные индекса и данных находятся на одном физическом диске, тогда будет четыре IO на диск 1 и ноль IO на диск 0. То есть в таком случае запросы будут проходить дольше на разницу в 2 IO.Да нет никакой пользы от разделения. Есть куча сессий которые читают таблицы, индексы через всякие RANGE/FULL/FAST FULL SCAN которые транслируются во всякие разные вызовы в зависимости от распределения данных в кэше, префетчей, batched, параметров инстанса и прочего. В итоге все выливается в серии синхроных-асинхронных вызовов и многоблочные-одноблочные чтения. Дальше в зависимости от IO scheduler и еще кучи всего все это идет в кэши массива, диски со своими префетчами и логиками. Поэтому можно конечно рассматривать случай когда к домашнему компу пару винтов подключили, поставили Oracle 8, запустили 2 сессии и стараемся одновременно читать индекс и таблицу, но это уже не актуально.
Поэтому давно и делается SAME, что обеспечивает максимальное кол-во IOPS и максимальную производительность.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390707
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wurduПоэтому давно и делается SAME, что обеспечивает максимальное кол-во IOPS и максимальную производительность.

SAME тоже устарел, как и идея использования HDD (в любом виде) для чего либо иного, как log/archlog/backupset

Установка SSD позволяет практически (в реальных применения) неограниченно повышать масштабируемость системы, при этом тебе прощаются очень, даже слишком многие огрехи сайзинга и тюнинга.

Как ни крути, а 120-240 iops для HDD против 44000-80000 iops на SSD дают себя знать - поместить 360 HDD для достижения сопоставимой с 1-м SDD производительности по iops - никакими SAME не достичь в разумных пределах.

Т.е. вполне достаточно поставить пару SSD и ограничиться RAID1 mirroring, вынеся копии логов и контролфайлы на HDD для самоуспокоения.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390709
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
index_dataВсегда был уверен, что для распределения IO индексы и данные нужно хранить на разных лунах. Сам оракл так рекомендует.

это расхожий миф из каких-то очень древних книжек вида Стив Бобровски Oracle 7 для профессионалов 1994-го года издания.

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

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

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

а учитывая откровенно рандомизированную (ибо в основе - HEAP) природу чтений и записей - единственно разумным является именно один большой тейблспейс на все схемы и объекты (не нужно париться с размерами), который действительно лежит на страйпах и зеркалах из всех имеющихся устройств.

даже страйпы особо не нужны, оракл, как ни странно, довольно неплохо справляется с распределением сегментов по дейтафайлов сам, нагружая все диски более менее равномерно.

а лимиты для приложений (защита от бешеной схемы с намерением съесть все место) отлично решаются квотами


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

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

но при наличии SSD даже это становится малоактуальным.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390710
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatch,

на SSD индексы - не нужны. только место отъедают.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390712
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchwurduПоэтому давно и делается SAME, что обеспечивает максимальное кол-во IOPS и максимальную производительность.

SAME тоже устарел, как и идея использования HDD (в любом виде) для чего либо иного, как log/archlog/backupset

Установка SSD позволяет практически (в реальных применения) неограниченно повышать масштабируемость системы, при этом тебе прощаются очень, даже слишком многие огрехи сайзинга и тюнинга.

Как ни крути, а 120-240 iops для HDD против 44000-80000 iops на SSD дают себя знать - поместить 360 HDD для достижения сопоставимой с 1-м SDD производительности по iops - никакими SAME не достичь в разумных пределах.

Т.е. вполне достаточно поставить пару SSD и ограничиться RAID1 mirroring, вынеся копии логов и контролфайлы на HDD для самоуспокоения.SSD тут принципиально ничего не меняет, т.к. например база на 20ТБ и естественно как-то странно пытаться воткнуть в тот же сервер SSD на 40TB чтобы получить единую точку отказа, поэтому нужен storage к которому как-то надо подключаться по нескольким путям, а там уже задержки появляются. Ну и возникает тот же вопрос, как storage нарезать, а не разнести ли нам индексы и таблицы по разным SSD.
И естественно HDD используются и будут использоваться еще долго. Достаточно взглянуть на последние модели Exadata, ODI и т.д.
Масштабируемость SSD наверное как-то могут повышать в ограниченных случаях, но по мне так это редкость. Плохая масштабируемость связана обычно с кривым дизайном-запросами, а какая там скорость одноблочного чтения и сколько IOPS уже не принципиально. Все обычно упирается в кол-во логических чтений, в сколько из них физических и насколько они быстрые уже не принципиально. Тем более сейчас, когда пара терабайт на Buffer Cache уже обычное дело.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390718
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wurdudbpatchпропущено...


SAME тоже устарел, как и идея использования HDD (в любом виде) для чего либо иного, как log/archlog/backupset

Установка SSD позволяет практически (в реальных применения) неограниченно повышать масштабируемость системы, при этом тебе прощаются очень, даже слишком многие огрехи сайзинга и тюнинга.

Как ни крути, а 120-240 iops для HDD против 44000-80000 iops на SSD дают себя знать - поместить 360 HDD для достижения сопоставимой с 1-м SDD производительности по iops - никакими SAME не достичь в разумных пределах.

Т.е. вполне достаточно поставить пару SSD и ограничиться RAID1 mirroring, вынеся копии логов и контролфайлы на HDD для самоуспокоения.SSD тут принципиально ничего не меняет, т.к. например база на 20ТБ и естественно как-то странно пытаться воткнуть в тот же сервер SSD на 40TB чтобы получить единую точку отказа, поэтому нужен storage к которому как-то надо подключаться по нескольким путям, а там уже задержки появляются. Ну и возникает тот же вопрос, как storage нарезать, а не разнести ли нам индексы и таблицы по разным SSD.
И естественно HDD используются и будут использоваться еще долго. Достаточно взглянуть на последние модели Exadata, ODI и т.д.
Масштабируемость SSD наверное как-то могут повышать в ограниченных случаях, но по мне так это редкость. Плохая масштабируемость связана обычно с кривым дизайном-запросами, а какая там скорость одноблочного чтения и сколько IOPS уже не принципиально. Все обычно упирается в кол-во логических чтений, в сколько из них физических и насколько они быстрые уже не принципиально.

SSD на 40TB не бывает, это раз. про масштабируемость на HDD - твои попытки выдать окроваения ничего, кроме зубной боли не вызывают. терабайтные объемы и мастштабирование HDD звучат актуально ну наверное для 2013 года, в 2017 такое слышать совсем не смешно.

про экзадату, с ее flashcache - как-то совсем уже мимо кассы, я надеюсь ты не стал даже думать, что там все на hdd построено?

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

и три - ну если вам сильно, сильно надо, кто мегает натолкать на 40терабайт этих самых SSD?

если там реальные бизнес-факты, то у вас бизнес как минимум на 100-200m$ ебитды в год, подобная установка вполне себе по карману.

wurduТем более сейчас, когда пара терабайт на Buffer Cache уже обычное дело.

Да, подобное вполне доступно на commodity железе, вкупе с inmemory compression, но в реальной практике это не принципиально, если вы конечно не какой процессинг пластика из небезызвестного банка, который умудрился все в один сервер как единую точку отказа затолкать (хотя бизнесу в том нет никакой нужды).

найти же бизнес, которому нужно иметь в near-realtime такие объемы oltp данных - это еще поискать, и там наверняка будет стоять вовсе не Oracle EE RDBMS как inmemory database
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390719
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunterdbpatch,

на SSD индексы - не нужны. только место отъедают.

о да! индексы это конечно не близкое к рандомному чтение, это строго секвенальное выкачивание многих сотен гигабайт в секунду.

напиши еще откровений.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390729
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchединственно разумным является именно один большой тейблспейс на все схемы и объектыНе, ну это уже совсем за гранью
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390750
Alexls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Расположение всех объектов на одном диске да еще и SSD - это просто замечательно.
А вот как быть в случае с массированной записью ( 50 -200 млн/сутки).
Как себя поведет SSD в данном случае.
Да если еще при этом и клиенты с этими данными работают.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390857
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудровdbpatchединственно разумным является именно один большой тейблспейс на все схемы и объектыНе, ну это уже совсем за гранью

безусловно, в стандартные шаблоны штатного "нарезателя" ресурсов такое никак не вкладывается.

как это так, я ведь стану совсем не нужным, кто же будет делать добрую треть моей работы - кропотливое добавление по гигабайтику в луны и тейблспейсы, мониторинг этого всего действа, разбор алертов и аут оф спейс инцидентов :):):)

реально ни в какие ворота такое не лезет, ипотеку то как оплачивать?
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390862
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexlsРасположение всех объектов на одном диске да еще и SSD - это просто замечательно.
А вот как быть в случае с массированной записью ( 50 -200 млн/сутки).
Как себя поведет SSD в данном случае.
Да если еще при этом и клиенты с этими данными работают.

50-200 млн. сутки чего? TCP трафик в базу данных кладете?

и еще раз - никто нигде не говорил иметь один SSD диск на всё (там конечный ресурс по терабайтам записи)

говорилось несколько обратное - положить все, что не redolog/archlog/backupset на SSD диск(и), т.е. таблицы и индексы, и не заниматься ерундой с нарезкой и "тонкой" балансировкой этого всего.

в остальном - если диск способен на 40000 iops, то в сутки он сможет 3,456,000,000 iops, это несколько больше, чем 200m, верно?

кроме того, большой fast_start_mttr и buffer cache позволит отложить запись в дейтафайлы, по сути вся sync-ронизируемая запись будет только в redo/ctl файлы, в дейтафайлы будет информация будет сбрасываться пакетировано (индексный блок обновится десятки раз в кеше, прежде чем упасть на диск, и т.п.).

этож азы, зачем это объяснять?
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390872
Alexls
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbpatch,

К сожалению SSD это отнюдь не ХДД. И это тоже азы.
И не выжно один он или их много.
Так что вопрос закономерен.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390970
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О, Грекс опять реинкарнировался :-)
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39390973
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchкроме того, большой fast_start_mttr и buffer cache позволит отложить запись в дейтафайлыЭто, точно
Он прямо слушается твоего "большого fast_start_mttr"_target(?)
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391005
index_data
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо. Поскольку никто не высказал явных аргументов против, то создаю свою БД по принципу данные отдельно, индексы отдельно.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391025
wurdu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
index_dataВсем спасибо. Поскольку никто не высказал явных аргументов против, то создаю свою БД по принципу данные отдельно, индексы отдельно.Ну если более низкая производительность такого решения не аргумент (просто потому что не получится добиться такой же степени утилизации), то можно и так. Только не понятно, почему только индексы. Можно UNDO, TEMP разбросать по шпинделям, еще чего-нить придумать можно
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391030
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вроде, наоборот
Все, (кроме меня ), высказались за одну большую помойку
Это, может, и неплохо, когда у тебя есть куча места в твоем безраздельном пользовании, но когда собираешь по кускам, с одного массива, с другого...
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391034
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудровdbpatchкроме того, большой fast_start_mttr и buffer cache позволит отложить запись в дейтафайлыЭто, точно
Он прямо слушается твоего "большого fast_start_mttr"_target(?)

И? Сделать эксперимент и проверить поведение при 3600 самому тебе не позволяет чувство очень глубокого самоуважения?

Впрочем.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391039
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав ЛюбомудровДа, вроде, наоборот
Все, (кроме меня ), высказались за одну большую помойку
Это, может, и неплохо, когда у тебя есть куча места в твоем безраздельном пользовании, но когда собираешь по кускам, с одного массива, с другого...

и в чем трудность собирать по кускам? собирать можно откуда угодно, нигде не озвучивалось требование иметь один большой datafile
речь была именно про один большой tablespace, в котором лежат таблицы и индексы со всех юзерских схем, а где там евойные datafile лежат - дело десятое.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391046
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wurduindex_dataВсем спасибо. Поскольку никто не высказал явных аргументов против, то создаю свою БД по принципу данные отдельно, индексы отдельно.Ну если более низкая производительность такого решения не аргумент (просто потому что не получится добиться такой же степени утилизации), то можно и так. Только не понятно, почему только индексы. Можно UNDO, TEMP разбросать по шпинделям, еще чего-нить придумать можно

:)

TEMP отдельная тема. даже очень, очень многоуважаемые сервис провайдеры (ну очень уважаемые, дальше уважать просто некуда) умудряются раскладывать TEMP на LUNы, которые еще и синхронно реплицируюся в соседний датацентр.

когда задаешь вопрос - ... эээээ.... зачем реплицировать-то, зачем их вообще хранить на SAN, можно же просто на локальный диск, их же после останова инстанса (или восстановления оного, переезда на другую ноду, итп) можно просто удалять, база их просто пересоздаст, состояние важно только для текущий сессий - стена непонимания.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391075
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchВячеслав Любомудровпропущено...
Это, точно
Он прямо слушается твоего "большого fast_start_mttr"_target(?)

И? Сделать эксперимент и проверить поведение при 3600 самому тебе не позволяет чувство очень глубокого самоуважения?

Впрочем.Ну, 3600 я не пробовал, конечно
Но при обычной работе примерно так
Код: plsql
1.
2.
3.
4.
5.
SQL> select target_mttr, estimated_mttr from v$instance_recovery;

TARGET_MTTR ESTIMATED_MTTR
----------- --------------
        150             60

И вот как-то всегда оно меньше того, что я заказываю
При больших закачках оно наверняка превысит, конечно FAST_START_MTTR_TARGET, но потом опять съедет к тому минимуму на котором может ненапряжно держаться
По крайней мере, я думаю это логично -- нехрен делать DBWR, почему бы и не поработать
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391095
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудровdbpatchпропущено...


И? Сделать эксперимент и проверить поведение при 3600 самому тебе не позволяет чувство очень глубокого самоуважения?

Впрочем.Ну, 3600 я не пробовал, конечно
Но при обычной работе примерно так
Код: plsql
1.
2.
3.
4.
5.
SQL> select target_mttr, estimated_mttr from v$instance_recovery;

TARGET_MTTR ESTIMATED_MTTR
----------- --------------
        150             60

И вот как-то всегда оно меньше того, что я заказываю
При больших закачках оно наверняка превысит, конечно FAST_START_MTTR_TARGET, но потом опять съедет к тому минимуму на котором может ненапряжно держаться
По крайней мере, я думаю это логично -- нехрен делать DBWR, почему бы и не поработать

при 3600 DBWR превращается в очень ленивого писателя, может держать грязные блоки целый день, пока явно не сделаешь flush кешу тем или иным образом.

проверялось как минимум на 10.2, не думаю, что что-то изменилось с тех пор.

хотя в Oracle есть такая... бяка, как forced direct path read (которая самовключается в 11g при даже при обычных, а не PQ фулсканах), она эту идилию может запросто свести в ноль (небезызвестная проблема _small_table_threshold)

т.е. чтобы сделать просчет SELECT -ом агрегатов минуя buffer cache (читая данные с диска напрямую в PGA) - ясен пончик, тебе нужно сделать полный чекпоинт и записать все грязные блоки их buffer cache, и плевать на MTTR target.

но подобные изыскания при обычных сверхмалых нагрузках конечно малоактуальны, поди не всякому нужно закатывать в базу данных с миллиард записей в день в режиме OLTP UPSERT, отсуствие знаний и практик в этом случае не является зазорным, тут ты пожалуй прав.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391118
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchпри 3600 DBWR превращается в очень ленивого писателя, может держать грязные блоки целый день, пока явно не сделаешь flush кешу тем или иным образом
Ммм... и даже контрольный точки его не напрягают? Ни инкрементальные ни нормальные?
Или нет checkpoint's? Значит журналы не переключаются?
Ну тогда понятен твой посыл "все проблемы решают ssd".
Действительно при такой нагрузке, где логи не переключаются весь день, не стоит заморачиваться ... ну в принципе, ничем не стоит заморачиваться, все и так будет ОК =)
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391144
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|dbpatchпри 3600 DBWR превращается в очень ленивого писателя, может держать грязные блоки целый день, пока явно не сделаешь flush кешу тем или иным образом
Ммм... и даже контрольный точки его не напрягают? Ни инкрементальные ни нормальные?
Если сделать сверхгигантские redo log, то инкрементальные - нет, не напрягают. С чего-бы?
Полные, ясное дело, напрягают.

AlexFF__|Или нет checkpoint's? Значит журналы не переключаются?
Ну тогда понятен твой посыл "все проблемы решают ssd".
Действительно при такой нагрузке, где логи не переключаются весь день, не стоит заморачиваться ... ну в принципе, ничем не стоит заморачиваться, все и так будет ОК =)
Да, именно сверхбольшие redo без переключений. Но см. выше про forced direct path read.

А так - да при таком подходе можно имея очень большой buffer cache и только HDD жить, когда в течении дня вся запись идет секвенально в redo, там любой HDD отлично справляется за счет группировки параллельных коммитов/redo log записей в один sync() вызов.

ну а по ночам делать full checkpoint джобой, чисто для профилактики.

но непредсказуемость времени этого самого full checkpoint (при рандомной записи скорость HDD падает со 100MB/s до 0.9MB/s) я бы не стал - время реакции системы не предсказуемо, тут все-таки стоит хотяб lvmcache/bcache (и подобное) подушку сделать какую, с применением SSD или иных каких write back технологий (мы такое правда не делали, ограничились явным управлением data lifecycle - горячие данные на SSD тейблспейсе, архивные - в отдельных тейблспейсах на HDD, которые еще и R/O помечаются, чтоб RMAN плохо не было)
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391173
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchпри 3600 DBWR превращается в очень ленивого писателя, может держать грязные блоки целый день, пока явно не сделаешь flush кешу тем или иным образом.
Интересно
Это именно при 3600?
При 3599 сбрасывает как есть возможность?
Ведь не зря же DBWR как минимум раз в 3 сек просыпается, неужели сразу засыпает, если очередь на запись не выросла до такой степени, что на восстановление потребуется почти час?
Попробую побаловаться как-нибудь, спасибо
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391188
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудровdbpatchпри 3600 DBWR превращается в очень ленивого писателя, может держать грязные блоки целый день, пока явно не сделаешь flush кешу тем или иным образом.
Интересно
Это именно при 3600?
При 3599 сбрасывает как есть возможность?
Ведь не зря же DBWR как минимум раз в 3 сек просыпается, неужели сразу засыпает, если очередь на запись не выросла до такой степени, что на восстановление потребуется почти час?
Попробую побаловаться как-нибудь, спасибо

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

нам это было актуально, потому что данные в течение дня гарантированно переписывались несколько раз (и потом никогда), т.е. хранить их только в buffer cache и только было обоснованно, просто потому что запись на SAN была лимитирована (реплицирующий аплинк был гигабитный, т.е. максимум 100 мегабайт в секунду на запись, даром что у тебя там стоит 200 физических дисков).

но в целом как техника это все успешно взято на вооружение даже без условия реплицируемого SAN - если у тебя сильно рандомная запись в таблицу, то превратить ее в секвенальную можно очень просто - пишем рандом в течение часа, потом заряжаем контрольный SELECT с форсированным direct path read (через хинт PARALLEL к примеру) - и вуаля, DBWR начинает большими кусками последовательно сбрасывать грязные экстенты на диск, вместо мелоблочной хаотичной записи, при этом параллельные писатели не блокируются и сбрасывается не кеш целиком, а только данные табличный сегмент

отличия по времени реакции и объему I/O - десятки раз
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391190
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchЕсли сделать сверхгигантские redo log, то инкрементальные - нет, не напрягают. С чего-бы?
Полные, ясное дело, напрягают.

Ну кроме гигантских логов были бы еще и гигантские зависы БД при сбросе всех этих блоков при cp.
Хотя их как раз и не должно быть, инкрементальные точки должны потихоньку перебросить всю грязную очередь.
Так что все равно неясно, как блоки будут держаться целый день.

dbpatchо см. выше про forced direct path read
Тут будут висы не только при прямом чтении, а при всех операциях, требующих сброс блоков сегмента на диск, как пример truncate.
Непонятно, как это будут терпеть )
В общем, мне кажется, что это настолько необычная БД, что ее существованием можно пренебречь )
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391202
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|dbpatchЕсли сделать сверхгигантские redo log, то инкрементальные - нет, не напрягают. С чего-бы?
Полные, ясное дело, напрягают.

Ну кроме гигантских логов были бы еще и гигантские зависы БД при сбросе всех этих блоков при cp.
Ээээээ. какое еще cp, ты о чем сейчас?

AlexFF__|Хотя их как раз и не должно быть, инкрементальные точки должны потихоньку перебросить всю грязную очередь.
Так что все равно неясно, как блоки будут держаться целый день.
В RAM, как же еще?

AlexFF__|dbpatchо см. выше про forced direct path read
Тут будут висы не только при прямом чтении, а при всех операциях, требующих сброс блоков сегмента на диск, как пример truncate.
Непонятно, как это будут терпеть )
В общем, мне кажется, что это настолько необычная БД, что ее существованием можно пренебречь )
truncate требует сброса блоков сегмента на диск?
прямо откровение.

откуда трава?
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391213
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchно в целом как техника это все успешно взято на вооружение даже без условия реплицируемого SAN - если у тебя сильно рандомная запись в таблицу, то превратить ее в секвенальную можно очень просто - пишем рандом в течение часа, потом заряжаем контрольный SELECT с форсированным direct path read (через хинт PARALLEL к примеру) - и вуаля, DBWR начинает большими кусками последовательно сбрасывать грязные экстенты на диск, вместо мелоблочной хаотичной записи, при этом параллельные писатели не блокируются и сбрасывается не кеш целиком, а только данные табличный сегмент

отличия по времени реакции и объему I/O - десятки раз
Так у вас есть такие реальные БД? Такой необычный подход могли бы и описать где-нибудь.
У вас там ручной аналог кешевой БД? Вся работа в памяти, сброс на диски подобен backup?

ЗЫ насчет форсированным direct path read (через хинт PARALLEL к примеру) - есть In-memory parallel execution.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391224
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchtruncate требует сброса блоков сегмента на диск?
прямо откровение.

откуда трава?Как обычно
Например, Resolving Issues Where 'enq: RO - fast object reuse' Contention Seen During Drop or Truncate Operations (Doc ID 1475659.1)
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391225
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нда, прочитал и в который раз подумал, ну зачем я в очередной раз полез в спор со специалистами форума =(
dbpatchЭэээээ. какое еще cp, ты о чем сейчас?
В RAM, как же еще?
truncate требует сброса блоков сегмента на диск?
прямо откровение.
откуда трава?
Всем спасибо, ушел )
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391234
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зря ты, Грекс прикольный
И интересный
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391241
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Так у вас есть такие реальные БД? Такой необычный подход могли бы и описать где-нибудь.
У вас там ручной аналог кешевой БД? Вся работа в памяти, сброс на диски подобен backup?
Ну, по правде говоря да, если приложение вообще хранит оперативные данные в своей in-process nosql базе данных отдельно, а в Oracle запись идет в режиме write-only, чтоб иметь возможость DWH и прочего intraday репортинга. Т.е. требование синхронных коммитов на каждый чих нет, array DML рулят. И часовой простой Oracle при restore ни на что не влияет.

Паттерн совсем не типовой, это факт. Но и задача закатывать миллиард фактов в день - тоже совсем не типовая.

AlexFF__|ЗЫ насчет форсированным direct path read (через хинт PARALLEL к примеру) - есть In-memory parallel execution.

Спасибо за наводку, это как-то прошло мимо меня https://www.rittmanmead.com/blog/2010/01/in-memory-parallel-execution-in-oracle-database-11gr2/

Хотя нововведение сильно сомнительно - там где нужен PQ - там данные гарантированно не могут уместиться в памяти и форсированное только дисковое чтение (особенно в случае exadata offloading) очень даже разумно, чтоб не вымывать из buffer cache горячие данные и справочники.

Но наверное кому-то прикольно получать SELECT SUM( по терабайтной выборке не за 60 секунд, а за 5, вот и запилили фич.
...
Рейтинг: 0 / 0
index и data на разных дисках
    #39391248
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexFF__|Нда, прочитал и в который раз подумал, ну зачем я в очередной раз полез в спор со специалистами форума =(
dbpatchЭэээээ. какое еще cp, ты о чем сейчас?
В RAM, как же еще?
truncate требует сброса блоков сегмента на диск?
прямо откровение.
откуда трава?
Всем спасибо, ушел )

Ок, про 1475659.1 я не знал и потестирую на досуге, спасибо.

Практического смысла в этом впрочем мало, ибо intraday никакие drop/truncate и так не происходят, там не только озвученные выше проблемы блокировок, есть проблемы и похлеще (тот-же markhot)
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / index и data на разных дисках
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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