Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вопрос по архитектурной структуре базы... / 14 сообщений из 14, страница 1 из 1
05.10.2015, 11:28
    #39068204
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Добрый день, назрел вопрос:

У нас исторически сложилась следующая ситуация - RAID10 на нем несколько логических дисков на которых раскидана база данных, отдельно данные, отдельно индексы и отдельно темпоральные табличные пространства.
Хочется понять целесообразность этого раскидывания.
Так же некоторые табличные пространства разбиты на несколько контейнеров лежащих в одной папке, имеет ли это смысл?
P.S. DB2 Windows Version 9.7.
...
Рейтинг: 0 / 0
05.10.2015, 13:42
    #39068382
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Меня всегда удивляла популярность подобных схем (отдельно то, отдельно сё). Ведь когда на СУБД идут запросы, а та, в свою очередь, осыпает диски своими запросами на чтение и запись, кажется очевидной простая стратегия, которую Oracle назвали S.A.M.E - stripe and mirroring everithing, то бишь, всё имеющееся в наличии размазать по всем дискам (возможно, за исключением транзакционных логов, которые-таки отдельная статья).

Применительно к DB2 мне ещё кажется разумным пользоваться RAID1, а не RAID10. Когда у нас есть N пар дисков, мы можем разместить по контейнеру на каждом зеркале (благо, DB2 автоматически балансирует данные по контейнерам) и задать prefetch size = N * extent size, и было обещано, что эти N кусков будут читаться одновременно. Правда, для RAID10 из тех же N пар рекомендована такая же настройка, но я-таки не понимаю, в чём будет польза в данном случае, как 10-ка справится с одновременным чтением этих кусков (куски, положим, большие, по 1м каждый, и дисков много). Для одностраничного же чтения едва ли будет разница. Но всё это надо проверять.
...
Рейтинг: 0 / 0
05.10.2015, 17:11
    #39068660
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Victor Metelitsa,
Ваши мысли понятны, спасибо. Но все же что касается размещение суммарного контейнера (одного) в папке или же нескольких в той же папке , есть разница?
...
Рейтинг: 0 / 0
05.10.2015, 18:34
    #39068720
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Если это контейнеры одного и того же tablespace, то класть их на один диск... неинтересно. Ну, положим,
extent size у нас 1м,
prefetch size 2м,
два контейнера одного табличного пространства,
tablescan
- и, как обещано, DB2 пытается выполнить два запроса по 1м одновременно. То есть передаст асинхронно операционной системе два запроса на чтение по 1 мегу.
Что произойдёт? Ну, наверное, ОС выполнит их последовательно. Точно также, как если бы prefetch size был 1м или контейнер был один.
С одностраничными запросами тем более не должно быть заметной разницы (с точки зрения нагрузки на диск) - одновременного чтения нескольких страниц не произойдёт, так и эдак надо подвести головки к участку диска и произвести I/O. Нагрузка на CPU при вычислении номера сектора... разная скорость подводки головок в разных обстоятельствах, разная плотность записи... понятия не имею, как оценивать.

И потому смысл разбивать на несколько контейнеров на одном диске непонятен. Это не Oracle, где это вынуждено - либо один большой контейнер, либо много маленьких (максимум по 32 гига при стандартной 8-килобайтовой странице), тут контейнеры довольно большие.

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

(Снова чисто теоретические рассуждения на основе чтения документации. Я, кстати, некоторое время назад занялся раскопками HammerDB на предмет адаптации квази-TPC-С и квази-TPC-H, но с моей загруженностью и темпами в этом году это может не произойти).
...
Рейтинг: 0 / 0
06.10.2015, 10:17
    #39069046
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Есть ещё пара интересных параметров у tablespace - это INITIALSIZE и INCREASESIZE. Кажется разумным поставить их в размер побольше, чтобы было поменьше фрагментации. Но будет ли толк, зависит от файловой системы. Надо отметить, что Oracle создаёт большие tablespace очень долго (по-видимому, чем-то полностью заполняет файлы), а DB2 очень быстро. Можно ожидать, что это будет не в пользу DB2 (по крайней мере, на тех файловых системах, что поддерживают sparse allocation), но этот вопрос тоже требует дополнительного исследования (чуть ли не с HEX-редактором в руках).
...
Рейтинг: 0 / 0
06.10.2015, 11:27
    #39069140
medoed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Victor Metelitsa,

Спасибо, Виктор за дельные советы и грамотные мысли - Ваш опыт бесценен!
...
Рейтинг: 0 / 0
06.10.2015, 11:35
    #39069161
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Мой опыт говорит, что мысли без экспериментальной проверки мало что стоят. Правда, эксперименты без мысли тоже.
...
Рейтинг: 0 / 0
07.10.2015, 16:03
    #39070925
xz321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Виктор, табличное пространство и контейнер DB2 создаёт очень быстро потому как внутри никакой разметки не делается и extents выделяются(allocate) по мере необходимости для таблицы, причём в асинхронном режиме, так что какого-то негатива для DB2 здесь будет сложно найти.


Минимальный размер контейнера который можно создать это 4 extents

1 extent в табличном пространстве фактически header который содержит описание
2 extent в табличном пространстве это некий список который хранит ссылки на все первые extent таблиц. Такие extents повторяются каждые кажется 32 тыс. extents
3 extent в табличном пространстве это может быть 1 extent таблицы и это некоторый список который указывает какие extents принадлежат данной таблице/индексу. повторные появляются по мере роста страниц. В нашем случае будет только одна ссылка на EXTENT 4
4 это данные в таблице.

Деление на куски и хранение отдельно, на мой взгяд имеет смысл только
1) для BLOB
2) хранения страрых данных на более дешевых носителях

Все остальное, только в специфических случаях.
...
Рейтинг: 0 / 0
07.10.2015, 17:18
    #39071001
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
xz321,
вопрос в sparse allocation. В каком виде это будет размещено на диске на такой файловой системе. Поэтому мне кажется разумным забить чем-то место сразу.
...
Рейтинг: 0 / 0
07.10.2015, 17:22
    #39071009
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Хочется, чтобы фрагментации было поменьше. Хотя с большим extent size это даже может быть и неважно.
...
Рейтинг: 0 / 0
08.10.2015, 22:00
    #39072443
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
А, дошло. Если strip size - это размер блока на диске, strip size равен db2-шному extent size, DB2_PARALLEL_IO включён, то prefetch в несколько extent'ов одновременно должен читать разные диски одновременно, что и требуется. Вопрос только, чему равен strip size. Максимум читаемого блока на виндах и, вроде бы, на линухе тоже, 1м, а массив может быть создан с иными параметрами, в этом смысле набор зеркал проще.

См. также
на тему NUMBLOCKPAGES у BUFFERPOOL,

http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000912.html?cp=SSEPGG_10.5.0/2-12-7-61&lang=en
http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000885.html?cp=SSEPGG_10.5.0/2-12-7-8&lang=en

http://etutorials.org/cert/dba certification/Chapter 2. Data Manipulation/The Buffer Pools/
...
Рейтинг: 0 / 0
26.10.2015, 09:48
    #39086417
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
Для raid-а получается вот как:

Положим, конкретный контроллер умеет читать со всех дисков одновременно. При этом
strip size = E килобайтов,
N дисков
=> stripe size = N*E килобайтов.

У нас есть два варианта распараллелить:

1. попытаться прочитать N кусков по E килобайтов одновременно;
DB2_PARALLEL_IO включён,
extent size = E
prefetch size = N*E

2. попытаться прочитать один кусок N*E килобайтов, считая, что операционная система передаст это драйверу контроллера, тот сам порежет запрос на N одновременных по N кусков.
DB2_PARALLEL_IO выключён,
extent size = N*E
prefetch size = N*E

Но второй вариант у нас под большим сомнением и ввиду возможностей ОС, и ввиду возможного ограничения, зашитого в DB2. К примеру, у нас E=256K, N = 4, мы ожидаем от DB2 одного 1-мегабайтного запроса к ОС, а она сделает четыре последовательных 256-килобайтных ввиду ограничения. Это совсем не то, что нужно.

Где узнать, чем обуславливается ограничение DB2 и какова его величина в тех или иных случаях? Я не нашёл. В качестве рабочей гипотезы принял, что 256К жёстко зашито для всех платформ (ну, то есть "для всех двух"), strip size массива и extent size при использовании массива должны быть строго одинаковыми и по возможности по максимуму (256К).
...
Рейтинг: 0 / 0
26.10.2015, 21:20
    #39087403
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
К этому надо прибавить какой-то способ, позволяющий обеспечить правильные смещения - чтобы экстент размером E был непрерывен и его отступ от начала диска был кратен E, т.е. чтобы весь диск можно было бы логически представить себе разбитым на экстенты размером E и наши базоданновые экстенты точно легли на них. Я не представляю, как этого добиться на "популярной" файловой системе (NTFS, ext3. ext4), хотя, быть может, я опять что-то не знаю. Такое обеспечивает ораклячий ASM (для "разумных" E), а для DB2, наверное, придётся использовать raw devices.
...
Рейтинг: 0 / 0
31.10.2015, 19:54
    #39091820
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по архитектурной структуре базы...
/sys/block/sdX/queue/max_sectors_kb
вот оно. Теперь под виндами надо такое же найти.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Вопрос по архитектурной структуре базы... / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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