|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространства? Имеем БД: DB2 LUW ver 9.7 fix pack 8 Enterprise x64 на платформе: Win 2008 R2 Enterprise x64 сервер: BC Hx5, CPU: E7-4870, RAM: 384GB СХД: Storwize V7000. Суть проблемы: Есть таблица с количеством строк порядка 5 млд. записей и небольшой средней длинной записи . В табличном пространстве только эта таблица. На таблице 1 кластеризованный индекс, который используется когда выборка данных небольшая и не используется когда итоговая выборка составляет > 300 тыс. строк. Это все нормально и оптимизатор отрабатывает корректно, поскольку таблица кластеризована именно по этой большой выборке и коэффициент селективности небольшой. Проблема заключается в том, что когда идет большая выборка данных мы видим, что суммарная нагрузка на СХД очень мала (примерно 25 -35 MB/s), причем скорость выборки не зависит ни от нагрузки на БД не от нагрузки на СХД. Причем скорость выборки не зависит даже от мощности СХД, наши тесты на DS5100 и на Storwize v7000 показывают одинаковые результаты. На обоих СХД используется 1 большой массив из RAID 10. Попытка разнести табличное пространство на 10 логических дисков (в пределах 1 массива на СХД) не принесла результата, мы имеем все ту же скорость ~30 MB/s., пропорционально распределенную по контейнерам. На комбинированных тестах мы получали на Storwize v7000 суммарную скорость ~ 2 GB/s. Изменение параметров: intra_parallel & querydegree результатов не дали, не можем понять где узкое место. DB2ADVIS говорит, что так и должно быть и изменений не требуется. Вопрос. Почему мы не можем получить сравнимые скорости (или хотя бы улучшение) при выборке данных? На что стоит посмотреть, на какие параметры БД или может СХД? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2016, 15:23 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se Вопрос. Почему мы не можем получить сравнимые скорости (или хотя бы улучшение) при выборке данных? На что стоит посмотреть, на какие параметры БД или может СХД? Спасибо. Многое зависит от запроса. Например : db2 "select * from db2inst5.r_lineitem_compr" > /dev/null читает с диска 4 MB/s db2 "select count(*) from db2inst5.r_lineitem_compr" > /dev/null читает с диска 800 MB/c Если у вас запрос подобный первому, то много из него вы не выжмете. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2016, 16:38 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Мне стоило указать пример запроса. small_tab(c1 bigint), row_count=6 000 000 big_tab(c1..c7), row_count=5 000 000 000 result request count ~ 280 000 000 select c1, c2, c3, c4 from big_tab b, small_tab s where b.c1=s.c1 with ur; >>"Если у вас запрос подобный первому, то много из него вы не выжмете" Это из личного опыта или есть какие либо причины, ограничения или еще что то? Если не трудно, поделитесь, пожалуйста. Кстати, если начать длинную транзакцию, а потом прервать ее, то можно получить скорость записи до 300 МБ/с на этом же TBSP. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2016, 16:57 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, А какая скорость работы с диском у, скажем: select count(c1), count(c2), count(c3), count(c4) from big_tab b, small_tab s where b.c1=s.c1 with ur; ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2016, 22:20 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Ограничения находятся в физике винчестеров. Основное время уходит на подвод головки, само же считывание очень быстро. Поэтому крупноблочное чтение очень быстрое, мелкоблочное чтение очень медленное (рахница разительна!), причём даже когда загрузка винчестеров в обоих случаях 100%. Для системы хранения данных прибавляется передача по сети, у которой подобная же проблема "крупноблочная передача vs мелкоблочная передача". Поэтому ограничиваться рассмотрением голых мегабайтов в секунду - ошибка. Надо рассматривать и другие параметры, вроде величины считываемого блока и загрузки винчестеров. Ещё довольно полезно анализировать планы, понимать, что стоит за цифрами "таймеронов" (я пришёл к выводу, что это расчётные миллисекунды), в каком случае чтение будет крупноблочным и в каком мелкоблочном и как это видно в плане. К сожалению, для DB2 я литературы на эту тему не знаю, читайте Jonathan Lewis. Cost based Oracle Fundamentals. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2016, 22:57 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
"Мелкоблочность" чтения зависит от фрагментации на дисках, а это как мне кажется зависит от: 1) фрагментации виртуального диска или блока, например lun 2) фрагментации базы, что решается через reorg, по сути ночной reorg - это борьба за экономию на дневных IOPS-ах При максимальной фрагментации получается почти случайное чтение, современные диски выдают около 200 random IOPS . При размере блока=4K скорость получается 200*4K=800K/секунду=примерно 1 мбайт/секунду на каждый диск. Если у вас качественный RAID10 (например ZFS), то предельная скорость random операций увеличивается до кол-ва дисков * 1мбайт/секунду. Например, для 4 дисков - это около 4Мбайт/секунду. Если ваши 30Мбайт в секунду - это для рандомного чтения, то это очень хороший показатель достижимый при количестве дисков около 20-30 шт. Чисто рандомного чтения конечно не бывает: 1) Не так велика фрагментация на диске, особенно для ZFS, где все записи (даже перезаписи старых данных) последовательные в пределах доступного нефрагментированого пространства. По сути в ZFS не бывает перезаписи, походит на архивные логи базы, всегда на новом незанятом месте. 2) Обычно в хранилище несколько кэшей различного уровня Например, при dd чтении с zvol с базой можно наблюдать флуктацию скорости от 3 до 30 МБ/сек. 3 - это когда совсем рандом 30 - это когда данные поступают из ARC, L2ARC либо просто последовательно вычитываются с дисков при удачном стечении обстоятельств, когда они записывались ранее Сомнительно, что передача данных по сети на сколько-нибудь заметно замедляет работу СУБД, ethernet пофик фрагментация данных на диске, если только небольшой лаг, но ведь и другие интерфейсы типа SAS не мгновенные. При скоростях около 30Мбайт/секунду, навряд ли сеть может как то повлиять на скорость. Как можно улучшить ситуацию? Наверно, с помощью nvram PCI SSD типа Intel DC 3700. В случае ZFS можно не все данные размещать на SSD, а например только L2ARC кэш второго уровня, получается экономнее, но остается вероятность время от времени прямого рандомного чтения с HDD, что значительно медленнее, чем c SSD. Еще SSD очень помогает улучшить производительность при update/insert/delete, если на них разместить активные логи. Сколько IOPS у вас показывает хранилище при долгом чтении? Сколько дисков в хранилище? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 06:04 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
еще наверно можно раскидать т. пространства по разным хранилищам ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 07:53 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
dbtwoshnickНапример, при dd чтении с zvol с базой можно наблюдать флуктацию скорости от 3 до 30 МБ/сек. 3 - это когда совсем рандом 30 - это когда данные поступают из ARC, L2ARC либо просто последовательно вычитываются с дисков при удачном стечении обстоятельств, когда они записывались ранее это всего лишь для 4! дисков в ZFS 2x2 как RAID10 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 07:56 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
dbtwoshnick"Мелкоблочность" чтения зависит от фрагментации на дисках Нет, я про случай, когда файл табличного пространства непрерывен. Тем не менее, часть запросов крупноблочные, а часть мелкоблочные. Крупноблочные - фуллсканы, а мелкоблочные - поиск по индексу. Поэтому, например, могут быть очень выгодны MDC. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 09:01 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaТем не менее, часть запросов крупноблочные, а часть мелкоблочные. Точнее, одни access path крупноблочные, другие мелкоблочные. У DB2 в плане запроса у крупноблочных пунктов может быть что-то вроде "prefetch eligible". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 09:04 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor Metelitsadbtwoshnick"Мелкоблочность" чтения зависит от фрагментации на дисках Нет, я про случай, когда файл табличного пространства непрерывен. Тем не менее, часть запросов крупноблочные, а часть мелкоблочные. Крупноблочные - фуллсканы, а мелкоблочные - поиск по индексу. Поэтому, например, могут быть очень выгодны MDC. а разве бывают непрерывные файлы в т.ч. TS с точки зрения HDD если база не только что залита из бэкапа, а долгое время накапливала данные раскидывая их случайным образом на всех уровнях абстракции данных? это ведь не свежескопированный на пустой винт большой ISO, который читается и пишется последовательно со скоростью 100 метров в сек и более допустим, после реорганизации файл TS может стать более непрерывен с точки зрения файловой системы, которую видит DB2 но ведь еще есть файловая система, обслуживающая lun как мне кажется накладываются все факторы: 1) фрагментация хранилища под lun, если небыло полного предварительного thick eager provisioning 2) фрагментация TS поверх lun 3) случайный характер обращений DB2 при мелкоблочныx операциях все это работает в комплексе и в конечном итоге может как увеличивать количество IOPs, так, наверно, иногда и уменьшать если повезет случайным блокам с точки зрения DB2 (или файловой системы верхнего уровня) физически оказаться рядом ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 09:43 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-se, А какая скорость работы с диском у, скажем: select count(c1), count(c2), count(c3), count(c4) from big_tab b, small_tab s where b.c1=s.c1 with ur; ? Скорость упала до 10 мб/с (причем стартовал процесс с 1 мб/с потом дорос до 10 мб/с, сейчас упал до 5мб/с). В принципе все объяснимо, поскольку чтение идет сейчас из индексного TS. Можно, конечно, пересоздать индекс с добавлением (include) полей и тогда посмотреть, может это решит проблему? dbtwoshnick , Спасибо за подробное описание. У меня нет точных данных по lun и пр., но к примеру на DS5100 было 44 диска RAID10, на Storwize их больше + там SDD как то включено. Насчет последовательности чтения, попробую перезалить таблицу, через экспорт. Mark Barinstein , пока писал ответ скорость изменилась, сейчас скачет 7-30 мб/с Интересно насколько актуальным является параметр db2_parallel_io=*.45 (сейчас стоит) для СХД вроде Storwize, мне сказали, что не актуально, это так? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 10:24 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Предположим, в табличном пространстве размер блока 32K, а размер экстента 32 блока - то есть 1M. Мелкоблочное чтение как раз про блоки, крупноблочное про экстенты (хотя есть нюансы). Если файловая система будет выделять место под файл блоками размером 1М (или кратными 1М), то это как раз то, что нужно. Ну, и поддержку raw devices у DB2, кажется, ещё не совсем зарезали. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 10:25 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seСкорость упала до 10 мб/с (причем стартовал процесс с 1 мб/с потом дорос до 10 мб/с, сейчас упал до 5мб/с). В принципе все объяснимо, поскольку чтение идет сейчас из индексного TS. Можно, конечно, пересоздать индекс с добавлением (include) полей и тогда посмотреть, может это решит проблему? Include, скорее всего ускорит. Но если вы сумеете удачно разбить таблицу на секции (partitions, multidimentional clusters - MDC), так, чтобы считать небольшое количество секций не по индексу, а fullscan'ом по этим секциям, это будет ещё лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 10:43 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seМне стоило указать пример запроса. small_tab(c1 bigint), row_count=6 000 000 big_tab(c1..c7), row_count=5 000 000 000 result request count ~ 280 000 000 select c1, c2, c3, c4 from big_tab b, small_tab s where b.c1=s.c1 with ur; Если вы просто куда-то фетчите все эти 280M строк, то тогда неудивительно Это какие-то выгрузки ? Ну не юзеру же в репорте понадобилось столько строк ... use-se>>"Если у вас запрос подобный первому, то много из него вы не выжмете" Это из личного опыта или есть какие либо причины, ограничения или еще что то? У меня примерно так же работают всякие ETL-екстракторы, тянущие десятки миллионов строк из таблиц-источников. Производительность одного процесса примерно такая же. Но их идет несколько параллельно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 11:00 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaЕсли файловая система будет выделять место под файл блоками размером 1М (или кратными 1М), то это как раз то, что нужно. а на что влияет размер блока хранилища? выравнивание при фрагментации? и в чем он выражается размер блока хранилища (не измеряется)? размер блока hdd то ведь не поменять, максимальное кол-во IOPS на 1 hdd тоже фиксированное возможно, было бы хорошо когда размер блока хранилища был бы кратен с количеством зеркал (страйпов vdevs), помноженным на размер блока на каждом зеркале т.е. на каждом HDD, если это RAID10? тогда каждый блок хранилища был бы представлен одинаковым количеством блоков на каждом hdd, хотя хранилища все более интеллектуальные и трудно точно предугадать, как они будут распределять по дискам ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 11:24 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaПредположим, в табличном пространстве размер блока 32K, а размер экстента 32 блока - то есть 1M. Мелкоблочное чтение как раз про блоки, крупноблочное про экстенты (хотя есть нюансы). Если файловая система будет выделять место под файл блоками размером 1М (или кратными 1М), то это как раз то, что нужно. Ну, и поддержку raw devices у DB2, кажется, ещё не совсем зарезали. TS: Page size = 4k Extent size = 32 Prefetch size = -1 Victor Metelitsause-seСкорость упала до 10 мб/с (причем стартовал процесс с 1 мб/с потом дорос до 10 мб/с, сейчас упал до 5мб/с). В принципе все объяснимо, поскольку чтение идет сейчас из индексного TS. Можно, конечно, пересоздать индекс с добавлением (include) полей и тогда посмотреть, может это решит проблему? Include, скорее всего ускорит. Но если вы сумеете удачно разбить таблицу на секции (partitions, multidimentional clusters - MDC), так, чтобы считать небольшое количество секций не по индексу, а fullscan'ом по этим секциям, это будет ещё лучше. попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 11:26 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
sysdymmy1use-seМне стоило указать пример запроса. small_tab(c1 bigint), row_count=6 000 000 big_tab(c1..c7), row_count=5 000 000 000 result request count ~ 280 000 000 select c1, c2, c3, c4 from big_tab b, small_tab s where b.c1=s.c1 with ur; Если вы просто куда-то фетчите все эти 280M строк, то тогда неудивительно Это какие-то выгрузки ? Ну не юзеру же в репорте понадобилось столько строк ... use-se>>"Если у вас запрос подобный первому, то много из него вы не выжмете" Это из личного опыта или есть какие либо причины, ограничения или еще что то? У меня примерно так же работают всякие ETL-екстракторы, тянущие десятки миллионов строк из таблиц-источников. Производительность одного процесса примерно такая же. Но их идет несколько параллельно. Да это ETL, вида: db2 +c alter table res activate not logged initially with empty table db2 insert into res select c1, c2, c3, c4 from big_tab b, small_tab s where b.c1=s.c1 with ur Проблема в том, что процесс выборки: 1. достаточно долгий (2-6 часов) 2. при наличии длинной транзакции на БД растут логи 3. БД в большей степени OLTP ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 11:36 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
dbtwoshnickVictor MetelitsaЕсли файловая система будет выделять место под файл блоками размером 1М (или кратными 1М), то это как раз то, что нужно. а на что влияет размер блока хранилища? выравнивание при фрагментации? и в чем он выражается размер блока хранилища (не измеряется)? размер блока hdd то ведь не поменять, максимальное кол-во IOPS на 1 hdd тоже фиксированное возможно, было бы хорошо когда размер блока хранилища был бы кратен с количеством зеркал (страйпов vdevs), помноженным на размер блока на каждом зеркале т.е. на каждом HDD, если это RAID10? тогда каждый блок хранилища был бы представлен одинаковым количеством блоков на каждом hdd, хотя хранилища все более интеллектуальные и трудно точно предугадать, как они будут распределять по дискам время io = время на позиционирование головки (X1) + время на считывание/запись (X2) 1 мег (при размере блока DB2 = 32K и extent size = 32) можно прочитать за 32 * X1 + 32 * X2 или за 1 * X1 + 32 * X2. Учитывая, что X1 очень велик по сравнению с X2, основной вклад в сравнении вносят именно 32 * X1 или 1 * X1. Количество iops у винчестеров (и не только у них) всё-таки разные для разного размера, и потому, что X2 не 0, и потому, что могут вступить какие-то другие ограничивающие факторы. Размер блока HDD имеет к этому весьма косвенное отношение. К примеру, выравнивание выбрано неудачно, по-старинке с 63-го сектора, а винчестер новый с блоком 4К, но современные операционные системы по умалчанию делают смещение 2048. Желательно, чтобы чтение одного блока DB2 (4К ... 32К), будучи транслированным через разные уровни (собственно DB2, файловая система ОС, система на хранилище), приводило к одному чтению с одного HDD, и чтобы одно чтение экстента DB2 приводило к одному чтению с одного HDD, к этому надо стремиться, изучать и настраивать все уровни. Кроме того, чтение одного экстента (что приблизительно равно тому многоблочному чтению, о котором говорю) ещё более выгодно по сравнению с одноблочным, если разбиение неудачно. Например, случай выше со смещением 63 (512-байтовых логических блоков) на винчестере с 4К физических блоков, четырёхкилобайтовый блок будет считан за два физических чтения, но и экстент тоже). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 12:26 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
[quot use-se]sysdymmy1пропущено... Да это ETL, вида: db2 +c alter table res activate not logged initially with empty table db2 insert into res select c1, c2, c3, c4 from big_tab b, small_tab s where b.c1=s.c1 with ur Проблема в том, что процесс выборки: 1. достаточно долгий (2-6 часов) 2. при наличии длинной транзакции на БД растут логи 3. БД в большей степени OLTP Вместо insert может быть удобнее load from cursor - едва ли быстрее, но хотя бы таблицу не надо пересоздавать, если что-то сломается по дороге. (Хотя при восстановлении из бекапа всё равно придётся. Жаль, что никто не предложит ibm-ерам на такие случаи сделать что-нибудь вроде alter table ... validate with empty table - пусть содержимое потерялось, но пересоздавать таблицы не доставляет удовольствия). А сам запрос выглядит безобидным, предполагая, что большая таблица фуллсканируется, а маленькая таблица вошла в буферный пул. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 12:31 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
[quot Victor Metelitsa]use-seпропущено... Вместо insert может быть удобнее load from cursor - едва ли быстрее, но хотя бы таблицу не надо пересоздавать, если что-то сломается по дороге. (Хотя при восстановлении из бекапа всё равно придётся. Жаль, что никто не предложит ibm-ерам на такие случаи сделать что-нибудь вроде alter table ... validate with empty table - пусть содержимое потерялось, но пересоздавать таблицы не доставляет удовольствия). А сам запрос выглядит безобидным, предполагая, что большая таблица фуллсканируется, а маленькая таблица вошла в буферный пул. LOAD для меня еще большая проблема. Вне зависимости от параметров иногда намертво подвешивает всю БД. Воспроизвел на тестовом сервере эту проблему и несколько раз запускал db2fods c hang парамтром, но увы умирает совсем, но это другая песня. Кстати export по сравнению с insert, прироста скорости не дает, да и реализация от разработчика именно ткая как написал выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 12:49 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seпока писал ответ скорость изменилась, сейчас скачет 7-30 мб/с Интересно насколько актуальным является параметр db2_parallel_io=*.45 (сейчас стоит) для СХД вроде Storwize, мне сказали, что не актуально, это так? Надо план запроса смотреть - использование индексов тут, скорее всего, будет очень неэффективным. Большую таблицу надо бы попробовать организовать по MDC (с1). db2_parallel_io=* (т.е. 6) для Storwize в IBM PDOA. У вас очень большое значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 13:58 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Да, с планом непонятно. Я автоматически думал, что большая ведущая, а маленькая ведомая, и для каждой b.c1 существует s.c1. Код: sql 1. 2. 3. 4.
в таком случае вообще напрашивается хеш-джойн, а индексы не нужны. Маленькая таблица закачивается в память, затем большая полностью сканируется и по хешу c1 в памяти ищутся значения закешированной маленькой таблицей. Забавно, что для одного и того же исполнения * IBM рисует в explain'е плана маленькую таблицу раньше (левее) большой, * а Oracle позже (ниже). IBM, видимо, исходит из логики, что маленькая таблица скачивается первой, а Oracle считает более важным, что большая таблица полностью сканируется, и для каждой b ищется s, и неважно, закеширована ли s. Важно, конечно, чтобы эта маленькая таблица была достаточно мала. А вот когда только для маленького процента b.c1 существует s.c1, логично пройти по s.c1 и для каждой записи там искать в b1 соответствия. Тогда надо как минимум индекс, а MDC по c1 должно быть оптимальным. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 14:59 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Без NONRECOVERABLE видал веселуху - табличному пространству позарез хочется забекапиться после LOAD'а. Но с NONRECOVERABLE всё всегда ОК. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 15:05 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-seпока писал ответ скорость изменилась, сейчас скачет 7-30 мб/с Интересно насколько актуальным является параметр db2_parallel_io=*.45 (сейчас стоит) для СХД вроде Storwize, мне сказали, что не актуально, это так? Надо план запроса смотреть - использование индексов тут, скорее всего, будет очень неэффективным. Большую таблицу надо бы попробовать организовать по MDC (с1). db2_parallel_io=* (т.е. 6) для Storwize в IBM PDOA. У вас очень большое значение. План запроса напрямую зависит от количества выбираемых данных. Основное назначение БД OLTP, т.е. для нашей большой таблицы на 1 запрос выбирается от 20 до 1000 записей, время выборки меньше 1 секунды (доли секунды), здесь используется индекс. При большой выборке, как было указано вначале, индекс не используется, а если и используется (на граничных условиях) то приводит, как правило, к увеличению общего времени выборки. Таблица имеет уникальный кластерный индекс по 3 первым полям (bigint,date,bigint), соответственно. Здесь немного статистики. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
большого количества данных из таблице не намного хуже (по времени). Главная проблема, что нет прироста скорости на новом железе. Первичная реорганизация была offline. Конечно же хотелось бы реорганизовать табличку снова, но.... На тестовом сервере (с этой же БД) с имитацией нагрузки я пытался сделать online реорганизацию, но после 5 дней непрерывной реорганизации прервал ее. Относительно маленькой таблицы, то она каждый день содержит новые данные и после каждого ETL чистится. Я не вижу, что с ней можно сделать, там всего 1 поле (bigint). Относительно: >>Большую таблицу надо бы попробовать организовать по MDC (с1). буду пробовать, но немного страшновато по следующим причинам: 1. Уникальность первичного ключа - это 3 поля, следовательность размерность будет 3? насколько вырастет потребность в дисковом пространстве? 2. пока не имею практики использования (почитать, конечно же почитаю и попробую), но насколько сложны эти MDC в обслуживании? 3. я так понял стоит попробовать именно авторORGANIZE BY -- Groups rows with similar values on multiple dimensions in the same table extent. This concept is known as multidimensional clustering (MDC). а не авторPARTITION BY -- Groups rows with similar values of a single dimension in the same data partition. This concept is known as table partitioning. Mark Barinsteindb2_parallel_io=* (т.е. 6) для Storwize в IBM PDOA. У вас очень большое значение. здесь немного не понял, вариант а)db2_parallel_io=* или б)db2_parallel_io=*.6 Буду пробовать, тестировать - это займет время. У меня будет возможность проверить эту выборку на IBM FlashSystem, посмотрим, что там будет. Большое спасибо всем за помощь, всем удачных выходных. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 16:08 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor Metelitsa Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Без NONRECOVERABLE видал веселуху - табличному пространству позарез хочется забекапиться после LOAD'а. Но с NONRECOVERABLE всё всегда ОК. Это да, на тех БД, что я создавал тоже не было проблем, но вот на продуктивной БД и ее копиях проблемы периодически проявлятся. Я вначале думал, что это результат множественной миграции БД, начиная с 7 версии, и пересоздав TS, проблема исчезнет, но она не исчезла. И с nonrecoverable и с copy yes периодически БД подвисает на 0.5-2 часа, потом нормально грузит. Что интересно, даже если неправильно указать таблицу, то все равно вначале повиснет, а потом выдаст ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 16:21 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seMark Barinsteindb2_parallel_io=* (т.е. 6) для Storwize в IBM PDOA. У вас очень большое значение. здесь немного не понял, вариант а)db2_parallel_io=* или б)db2_parallel_io=*.6Если это не ошибка у вас, то такое значение через точку вообще неправильно. Надо через двоеточие. DB2_PARALLEL_IO=* DB2_PARALLEL_IO=*:6 http://www.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.regvars.doc/doc/r0005658.html ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 16:40 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seИ с nonrecoverable и с copy yes периодически БД подвисает на 0.5-2 часа, потом нормально грузит. Что интересно, даже если неправильно указать таблицу, то все равно вначале повиснет, а потом выдаст ошибку. Онлайн-бекап одновременно с этим не делался? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 21:17 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se... При большой выборке, как было указано вначале, индекс не используется, а если и используется (на граничных условиях) то приводит, как правило, к увеличению общего времени выборки. Таблица имеет уникальный кластерный индекс по 3 первым полям (bigint,date,bigint), соответственно. Здесь немного статистики. ... Практически бесполезна, когда плана и многого другого важного мы так и не увидели. Если ведущая таблица "большая" и фуллскан идёт по ней, кластерный индекс не особо интересен. use-seОтносительно маленькой таблицы, то она каждый день содержит новые данные и после каждого ETL чистится. Я не вижу, что с ней можно сделать, там всего 1 поле (bigint). Относительно: >>Большую таблицу надо бы попробовать организовать по MDC (с1). буду пробовать, но немного страшновато по следующим причинам: 1. Уникальность первичного ключа - это 3 поля, следовательность размерность будет 3? насколько вырастет потребность в дисковом пространстве? Положим Код: sql 1. 2. 3.
и b.c1, b.c2, b.c3 - ключ на b. Разумеется, MDC по b.c1, b.c2, b.c3 - тяжёлая ошибка, ибо каждая запись займёт отдельный экстент. Смысл может иметь только MDC по меньшему числу колонок, и, скорее всего, только по c1. И то польза будет не обязательно. Надо, чтобы 1) для каждого уникального c1 было "много" записей в b Код: sql 1. 2.
т.е. чтобы отношение x1/x2 было "большим"; чем оно больше, тем меньше пространства уйдёт впустую. 2) чтобы маленькая таблица была "ведущей" в запросе, a la для каждой строки small_tab s .. искать строки в big_tab b по условию b.c1=s.c1 .. конец цикла 3) и чтобы в результате только часть строк big_tab требовалась, а не все они; чтобы Код: sql 1. 2.
и Код: sql 1. 2. 3. 4. 5. 6. 7.
давали "серьёзно" различающийся результат 2. пока не имею практики использования (почитать, конечно же почитаю и попробую), но насколько сложны эти MDC в обслуживании? Вроде бы ничего сложного. Впрочем, и возможностей маловато (по сравнению с ораклячьим табличным партишионированием). 3. я так понял стоит попробовать именно авторORGANIZE BY -- Groups rows with similar values on multiple dimensions in the same table extent. This concept is known as multidimensional clustering (MDC). а не авторPARTITION BY -- Groups rows with similar values of a single dimension in the same data partition. This concept is known as table partitioning. Здесь MDC напрашивается. Но у Оракля, например, MDC нет, но ораклисты обходятся табличным партишионированием. Смысл же простой - надо побить таблицу на секции, чтобы фуллсканить не всю таблицу, а только некоторые секции, и так, чтобы оптимизатор понял выгоду. Хотя в данной задаче табличное партишионирование довольно неудобно, и я не уверен вообще, что DB2-шное табличное партишионирование справится. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2016, 21:51 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark BarinsteinЕсли это не ошибка у вас, то такое значение через точку вообще неправильно. Надо через двоеточие. По факту стоит не точка, а запятая, что не меняет сути - все равно ошибка, поправил Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 12:29 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaОнлайн-бекап одновременно с этим не делался? нет не делался Victor MetelitsaПрактически бесполезна, когда плана и многого другого важного мы так и не увидели. Если ведущая таблица "большая" и фуллскан идёт по ней, кластерный индекс не особо интересен. Прошу прощения, я должен был с самого начала приложить планы запросов, но подумал, что и так все понятно. Вот планы, если интересно: D:\scripts>db2expln -d russiadb -o d:\tmp\rows_all.txt -g -q "SELECT h.c1_id, h.c2_HISTORY_DATE, h.PAY_STATUS FROM sh1.big_tab h, sh2.small_tab l WHERE h.c1_id = l.c1_id WITH UR" DB2 Universal Database Version 9.7, 5622-044 (c) Copyright IBM Corp. 1991, 2009 Licensed Material - Program Property of IBM IBM DB2 Universal Database SQL and XQUERY Explain Tool ******************** DYNAMIC *************************************** ==================== STATEMENT ========================================== Isolation Level = Cursor Stability Blocking = Block Unambiguous Cursors Query Optimization Class = 5 Partition Parallel = No Intra-Partition Parallel = No SQL Path = "SYSIBM", "SYSFUN", "SYSPROC", "SYSIBMADM", "DB2ADMIN" Statement: SELECT h.c1_id, h.c2_HISTORY_DATE, h.PAY_STATUS FROM big_tab h, small_tab l WHERE h.c1_id =l.c1_id WITH UR Statement Isolation Level = Uncommitted Read Section Code Page = 1251 Estimated Cost = 236238336,000000 Estimated Cardinality = 169059488,000000 Access Table Name = big_tab ID = 8,4 | #Columns = 3 | May participate in Scan Sharing structures | Scan may start anywhere and wrap, for completion | Scan can be throttled in scan sharing management | Relation Scan | | Prefetch: Eligible | Isolation Level: Uncommitted Read | Lock Intents | | Table: Intent None | | Row : None Nested Loop Join | Access Table Name = small_tab ID = 40,15 | | Index Scan: Name = small_tab_INDEX ID = 1 | | | Regular Index (Not Clustered) | | | Index Columns: | | | | 1: c1_id (Ascending) | | #Columns = 0 | | Single Record | | Fully Qualified Unique Key | | #Key Columns = 1 | | | Start Key: Inclusive Value | | | | | 1: ? | | | Stop Key: Inclusive Value | | | | | 1: ? | | Index-Only Access | | Index Prefetch: None | | Isolation Level: Uncommitted Read | | Lock Intents | | | Table: Intent None | | | Row : None Return Data to Application | #Columns = 3 End of section Optimizer Plan: Rows Operator (ID) Cost 1,69059e+008 n/a RETURN ( 1) 2,36238e+008 | 1,69059e+008 n/a NLJOIN ( 2) 2,36238e+008 / \---\ 5,24234e+009 * n/a | TBSCAN 6,47055e+006 ( 3) Index: 1,56039e+008 sh2 | small_tab_INDEX 5,24234e+009 n/a Table: sh1 big_tab ---------------------------------------------------- D:\scripts>db2expln -d russiadb -o d:\tmp\rows_10only -g -q "SELECT c1_id, c2_HISTORY_DATE, PAY_STATUS FROM big_tab WHERE c1_id in (select c1_id from small_tab fetch first 10 rows only) WITH UR" DB2 Universal Database Version 9.7, 5622-044 (c) Copyright IBM Corp. 1991, 2009 Licensed Material - Program Property of IBM IBM DB2 Universal Database SQL and XQUERY Explain Tool ******************** DYNAMIC *************************************** ==================== STATEMENT ========================================== Isolation Level = Cursor Stability Blocking = Block Unambiguous Cursors Query Optimization Class = 5 Partition Parallel = No Intra-Partition Parallel = No SQL Path = "SYSIBM", "SYSFUN", "SYSPROC", "SYSIBMADM", "DB2ADMIN" Statement: SELECT c1_id, c2_HISTORY_DATE, PAY_STATUS FROM big_tab WHERE c1_id in (select c1_id from small_tab fetch first 10 rows only) WITH UR Statement Isolation Level = Uncommitted Read Section Code Page = 1251 Estimated Cost = 972,537354 Estimated Cardinality = 261,275208 Access Table Name = small_tab ID = 40,15 | #Columns = 1 | May participate in Scan Sharing structures | Scan may start anywhere and wrap, for completion | Scan can be throttled in scan sharing management | Relation Scan | | Prefetch: Eligible | Isolation Level: Uncommitted Read | Lock Intents | | Table: Intent None | | Row : None Nested Loop Join | Piped Inner | Access Table Name = big_tab ID = 8,4 | | Index Scan: Name = big_tab_PK ID = 1 | | | Regular Index (Clustered) | | | Index Columns: | | | | 1: c1_id (Descending) | | | | 2: c2_HISTORY_DATE (Descending) | | | | 3: STREAM_ID (Descending) | | #Columns = 0 | | #Key Columns = 1 | | | Start Key: Inclusive Value | | | | | 1: ? | | | Stop Key: Inclusive Value | | | | | 1: ? | | Index-Only Access | | Index Prefetch: None | | Isolation Level: Uncommitted Read | | Lock Intents | | | Table: Intent None | | | Row : None | | Sargable Index Predicate(s) | | | Insert Into Sorted Temp Table ID = t1 | | | | #Columns = 1 | | | | #Sort Key Columns = 1 | | | | | Key 1: (Ascending) | | | | Sortheap Allocation Parameters: | | | | | #Rows = 27,000000 | | | | | Row Width = 20 | | | | Piped | | | | Duplicate Elimination | Sorted Temp Table Completion ID = t1 | List Prefetch Preparation | | Access Table Name = big_tab ID = 8,4 | | | #Columns = 3 | | | RID List Fetch Scan | | | Fetch Using Prefetched List | | | | Prefetch: 2 Pages | | | Isolation Level: Uncommitted Read | | | Lock Intents | | | | Table: Intent None | | | | Row : None | | | Sargable Predicate(s) | | | | #Predicates = 1 Return Data to Application | #Columns = 3 End of section Optimizer Plan: Rows Operator (ID) Cost 261,275 n/a RETURN ( 1) 972,537 | 261,275 n/a NLJOIN ( 2) 972,537 /-/ \-\ 10 26,1275 n/a n/a TBSCAN FETCH ( 3) (--) 38146,2 95,3037 | / \ 6,47055e+006 26,1275 5,24234e+009 n/a n/a n/a Table: RIDSCN Table: sh2 ( 5) sh1 small_tab 51,4576 big_tab | 26,1275 n/a SORT ( 6) 51,4571 | 26,1275 n/a IXSCAN ( 7) 51,4532 | 5,24234e+009 Index: sh1 big_tab_PK Victor MetelitsaПоложим Код: sql 1. 2. 3.
и b.c1, b.c2, b.c3 - ключ на b. Разумеется, MDC по b.c1, b.c2, b.c3 - тяжёлая ошибка, ибо каждая запись займёт отдельный экстент. Смысл может иметь только MDC по меньшему числу колонок, и, скорее всего, только по c1. И то польза будет не обязательно. Надо, чтобы 1) для каждого уникального c1 было "много" записей в b Код: sql 1. 2.
т.е. чтобы отношение x1/x2 было "большим"; чем оно больше, тем меньше пространства уйдёт впустую. Получается, чтобы использовать MDC нам придется отказаться от уникальности первичного ключа и вместо (с1,с2,с3) использовать индекс по c1. На уровне БД я проблем не виду, а вот со стороны софта придется смотреть. Victor Metelitsa2) чтобы маленькая таблица была "ведущей" в запросе, a la для каждой строки small_tab s .. искать строки в big_tab b по условию b.c1=s.c1 .. конец цикла Написать процедуру, которая будет по курсору на маленькую таблицу выбирать построчно из большой? Попробую, хотя что то мне подсказывает, что лучше не будет, но спасибо за совет. Victor Metelitsa3) и чтобы в результате только часть строк big_tab требовалась, а не все они; чтобы Код: sql 1. 2.
и Код: sql 1. 2. 3. 4. 5. 6. 7.
давали "серьёзно" различающийся результат авторпропустил... Вроде бы ничего сложного. Впрочем, и возможностей маловато (по сравнению с ораклячьим табличным партишионированием). Здесь MDC напрашивается. Но у Оракля, например, MDC нет, но ораклисты обходятся табличным партишионированием. Смысл же простой - надо побить таблицу на секции, чтобы фуллсканить не всю таблицу, а только некоторые секции, и так, чтобы оптимизатор понял выгоду. Хотя в данной задаче табличное партишионирование довольно неудобно, и я не уверен вообще, что DB2-шное табличное партишионирование справится. Большое спасибо за детальное описание и советы ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 12:58 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
весело у вас тут. неделя разговоров о высоком, а у него поблочно нестед лупом долбит :D use-se, просто добейся hash-join. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 19:21 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seПолучается, чтобы использовать MDC нам придется отказаться от уникальности первичного ключа и вместо (с1,с2,с3) использовать индекс по c1. На уровне БД я проблем не виду, а вот со стороны софта придется смотреть. Если я правильно понимаю то, что вы написали, то вы всё ещё не понимаете, что такое MDC. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 19:24 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seНаписать процедуру, которая будет по курсору на маленькую таблицу выбирать построчно из большой? Попробую, хотя что то мне подсказывает, что лучше не будет, но спасибо за совет. Ничего подобного я не советовал. Я описывал (в меру своего понимания), как DB2 исполняет запрос. Вообще, вы бы лучше Льюиса почитали. Пусть про Oracle, пусть долго, но очень полезно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 19:28 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
[quot use-se] Прошу прощения, я должен был с самого начала приложить планы запросов, но подумал, что и так все понятно. [quot] Понятно только, что возможно минимум два плана, а на самом деле больше. И желательно fixed-шрифтом, иначе совсем ничего не понять. Вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 19:32 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Ну, MDC по h.c1_id ещё более напрашивается. Второй запрос им воспользуется наверняка (хотя, за вид, он и так должен быть быстрым), первый... ну, наверное, оптимизатор догадается, а если нет, то надо будет как-нибудь заставить. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 19:44 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, Желательно выполнить: db2 "explain all with snapshot for select ..." db2exfmt -d mydb -1 -o myplan.txt Также дайте вывод: db2set -all И какие типы данных полей, по которым идёт соединение таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2016, 21:00 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-se, Желательно выполнить: db2 "explain all with snapshot for select ..." db2exfmt -d mydb -1 -o myplan.txt Также дайте вывод: db2set -all И какие типы данных полей, по которым идёт соединение таблиц. Добрый день. Извиняюсь за зедержку. У меня такое чувство , что мое направление движения было в самом начале неверным как и вопрос, нус бывает, прошу понять и простить. Типы полей: SMALL_TAB.C1_ID BIGINT, BIG_TAB.C1_ID BIGINT BIG_TAB.С1_HISTORY_DATE DATE BIG_TAB.PAY_STATUS SMALLINT Информация по нидексам: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Первый запрос 10 строк: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784. 785. 786. 787. 788. 789. 790. 791. 792. 793. 794. 795. 796. 797. 798. 799. 800. 801. 802. 803. 804. 805. 806. 807. 808. 809. 810. 811. 812. 813. 814. 815. 816. 817. 818. 819. 820. 821. 822. 823. 824. 825. 826. 827. 828. 829. 830. 831. 832. 833. 834. 835. 836. 837. 838. 839. 840. 841. 842. 843. 844. 845. 846. 847. 848. 849. 850. 851. 852. 853. 854. 855. 856. 857. 858. 859. 860. 861. 862. 863. 864. 865. 866. 867. 868. 869. 870. 871. 872. 873. 874. 875. 876. 877. 878. 879. 880. 881. 882. 883. 884. 885. 886. 887. 888. 889. 890. 891. 892. 893. 894. 895. 896. 897. 898. 899. 900. 901. 902. 903. 904. 905. 906. 907. 908. 909. 910. 911. 912. 913. 914. 915. 916. 917. 918. 919. 920. 921. 922. 923. 924. 925. 926. 927. 928. 929. 930. 931. 932. 933. 934. 935. 936. 937. 938. 939. 940. 941. 942. 943. 944. 945. 946. 947. 948. 949. 950. 951. 952. 953. 954. 955. 956. 957. 958. 959. 960. 961. 962. 963. 964. 965.
Второй запрос ВСЕ строки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784.
Третий запрос ВСЕ строки, но иначе (через IN): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784. 785.
И вывод db2set -all Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 15:29 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor Metelitsause-seПолучается, чтобы использовать MDC нам придется отказаться от уникальности первичного ключа и вместо (с1,с2,с3) использовать индекс по c1. На уровне БД я проблем не виду, а вот со стороны софта придется смотреть. Если я правильно понимаю то, что вы написали, то вы всё ещё не понимаете, что такое MDC. Вы правильно понимаете, пока я не потрогаю руками сам - не пойму. Читал ради интереса не более. Относительно NLJOIN честно скажу, всего проверял 2 вида запроса 1) big_tab.c1_id=small_tab.c1_id 2) big_tab.c1_id ib (select c1_id from small_tab) попытаться как то инача переписать запрос в голову не приходлило. 2 таблицы, что тут искать, хоть какая либо предварительная выборка была бы. Подумать переписать, подумаю, попробую, может по частям может, или как распаралелить. Может попробовать в явном виде задать для заданного запроса план использования индекса? Статистику недавно собирал, но может сторит пересмотреть профиль сбора статистики с распределением по колонкам и индексам учавствующим в соединении? А может DB2 не использует hash join по причине, что hash таблицы получаюся слишком большими? Что то я совсем запутался )) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 16:00 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seVictor Metelitsaпропущено... Если я правильно понимаю то, что вы написали, то вы всё ещё не понимаете, что такое MDC. Вы правильно понимаете, пока я не потрогаю руками сам - не пойму. Читал ради интереса не более. Ну там же на картинках так наглядно нарисовано. Смысл в MDC по колонке X - сгруппировать вместе данные с одинаковым значением X, они будут группироваться экстентами. Когда X оказывается уникальным, у вас на экстенте оказывается ровно одна запись. Эффект - дикое и безумное распухание таблицы. Относительно NLJOIN честно скажу, всего проверял 2 вида запроса 1) big_tab.c1_id=small_tab.c1_id 2) big_tab.c1_id ib (select c1_id from small_tab) попытаться как то инача переписать запрос в голову не приходлило. 2 таблицы, что тут искать, хоть какая либо предварительная выборка была бы. Подумать переписать, подумаю, попробую, может по частям может, или как распаралелить. Может попробовать в явном виде задать для заданного запроса план использования индекса? Статистику недавно собирал, но может сторит пересмотреть профиль сбора статистики с распределением по колонкам и индексам учавствующим в соединении? А может DB2 не использует hash join по причине, что hash таблицы получаюся слишком большими? Что то я совсем запутался )) NLJOIN или HASH JOIN выбирать - это, вообще-то, личное дело оптимизатора, хотя он может ошибиться. HASH JOIN, в принципе, работает без индексов (хотя он может воспользоваться индексом, "как таблицей"). Использование индекса "как индекса" влечёт за собой одноблочный доступ. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 16:49 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seА может DB2 не использует hash join по причине, что hash таблицы получаюся слишком большими? Что то я совсем запутался )) точно нет. он должен был взять маленькую таблицу/индекс, которая весит всего 116 мб, по ней в памяти построить хэш и фуллсканом читать большую, параллельно вычисляя хэш и выдавая заджоиненный результат на выход. ничего быстрее тут не выдумать, разве что индекс по тем трем полям, что нужны запросу. а сейчас у вас NL долбит одноблочным чтением, не удивительно что это часы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 19:11 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, HSJOIN не обязательно будет быстрее NLJOIN в этой ситуации - соединение по одном полю при наличии индекса в маленькой таблице по этому полю. Если хотите сравнить, увеличьте значительно SORTHEAP и используйте оптимизационный профиль для указания использования HSJOIN. Можете даже пока не запуская запрос посмотреть на цену запроса такого плана и сравнить его с текущим. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 20:45 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Yo.!точно нет. он должен был взять маленькую таблицу/индекс, которая весит всего 116 мб, по ней в памяти построить хэш и фуллсканом читать большую, параллельно вычисляя хэш и выдавая заджоиненный результат на выход. ничего быстрее тут не выдумать, разве что индекс по тем трем полям, что нужны запросу. а сейчас у вас NL долбит одноблочным чтением, не удивительно что это часы. Про одноблочное чтение - это откуда взято? В плане - табличное сканирование большой (внешней) таблицы. Метод доступа - sequential prefetch - это чтение экстентами (большими блоками). Какой здесь смысл здесь таблицу из одного уникального проиндексированного поля засовывать в память, вычислять хэш для каждого уникального поля, чтобы потом по нему получать доступ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 21:00 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Там два запроса и два плана. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:08 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Даже три. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:09 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Берём первый: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63.
Ведущая таблица SMALL_TAB. Для каждого C1_ID происходит поиск BIG_TAB_PK, накапливаются и сортируются RID'ы (до 512-штук), затем происходит PREFETCH из BIG_TAB. Как я помню, оно кластеризовано и потому это имеет смысл. А для поиска в индексе PREFETCH'а нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:20 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Второй. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Ведущая таблица BIG_TAB (а если на ней сделать MDC по C1_ID, то есть надежда, что она станет ведомой). Она префетчится, как и следовало ожидать. Для SMALL_TAB используется index only access. PREFETCH: (Type of Prefetch) NONE. Абстрактно хеш джойн кажется более выгодным. То ли таблица не влезла, то ли что ещё. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:27 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark BarinsteinПро одноблочное чтение - это откуда взято? В плане - табличное сканирование большой (внешней) таблицы. Метод доступа - sequential prefetch - это чтение экстентами (большими блоками). я так понимаю в плане 2, на каждую запись большой таблицы идет IXSCAN: (Index Scan) с PREFETCH: NONE. сканирование реально один блок читает, т.е. тот самый долбеж. разве нет ? Mark BarinsteinКакой здесь смысл здесь таблицу из одного уникального проиндексированного поля засовывать в память, вычислять хэш для каждого уникального поля, чтобы потом по нему получать доступ? не так. в оракле из pk маленькой таблицы построился бы хеш в памяти, потом пошел бы фуллскан большой. по мере чтения большой создавался бы хеш по pk и сравнивался с хеш-таблицой в памяти. если ключ не найдет в баню, если найден, в результирующий курсор нужные поля. таким образом он мог бы хоть петабайты большой таблицы читать и получить результат за адекватное время. думаю с 347 гб таблицы реально минут за 20 справиться по такой схеме. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:37 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:39 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
"Разумеется", у DB2 хеш джойн есть. Возможно, настройки не позволили выделить нужное количество памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:43 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaДв, не очень маленькая. 112 мег? согласен, не маленькая, а микроскопическая ... особенно на фоне 384GB сервера, в которые у 112 мег есть хорошие шансы уместиться даже в виде хеша Victor Metelitsa"Разумеется", у DB2 хеш джойн есть. Возможно, настройки не позволили выделить нужное количество памяти. я конечно не высокого мнения о db2, но о наличии хэш джина подозревал :D и тоже голосую за настройки памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 22:52 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor Metelitsa, Способ, которым маленькая таблица попадёт в память, не так важен, ка кэффективность последующего доступа к ней. При HSJOIN таблица полностью сканируется, причём да, большими блоками. Но делается это только для того, чтобы построить "хэш-индекс". А здесь таблица уже проиндексирована и, скорее всего, и так уже сидит в памяти вся. Насколько более или менее эффективен такой построенный индекс, чем существующий - вопрос стоимости, который оптимизатор должен оценить. Ещё раз: не всегда для соединения "больших" таблиц HJOIN эффективнее NLJOIN или MSJOIN. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 23:12 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
И тогда мы вновь возвращаемся к вопросу в первом письме = почему "суммарная нагрузка на СХД очень мала (примерно 25 -35 MB/s)". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 23:37 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Yo.!Mark BarinsteinПро одноблочное чтение - это откуда взято? В плане - табличное сканирование большой (внешней) таблицы. Метод доступа - sequential prefetch - это чтение экстентами (большими блоками). я так понимаю в плане 2, на каждую запись большой таблицы идет IXSCAN: (Index Scan) с PREFETCH: NONE. сканирование реально один блок читает, т.е. тот самый долбеж. разве нет ?Нет, не правильно. Большая таблица (описание доступа в операторе 3) - слева, маленькая - справа. авторMark BarinsteinКакой здесь смысл здесь таблицу из одного уникального проиндексированного поля засовывать в память, вычислять хэш для каждого уникального поля, чтобы потом по нему получать доступ? не так. в оракле из pk маленькой таблицы построился бы хеш в памяти, потом пошел бы фуллскан большой. по мере чтения большой создавался бы хеш по pk и сравнивался с хеш-таблицой в памяти. если ключ не найдет в баню, если найден, в результирующий курсор нужные поля. таким образом он мог бы хоть петабайты большой таблицы читать и получить результат за адекватное время. думаю с 347 гб таблицы реально минут за 20 справиться по такой схеме.Здесь 2 варианта, в обоих - сканирование большой таблицы. Отличаются они только способом к маленькой таблице. db2 сканирует большую, но не строит хеш-индекс по маленькой, а пользуется существующим индексом по ней. Другой вариант мог бы быть сканированием маленькой, построением хеш-индекса в памяти, доступ к ней по каждой строке из большой не по существующему индексу (который тоже вполне себе может сесть в память и быть не менее эффективным), а по фактически новому (хеш-индексу), построенному в процессе работы. Я бы вот так сразу безапелляционно не сказал, какой способ лучше для пета- или экза- байтов лучше подойдёт. У обоих методов есть плюсы и минусы, и это надо на цену запроса и на время выполнения смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 23:44 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaИ тогда мы вновь возвращаемся к вопросу в первом письме = почему "суммарная нагрузка на СХД очень мала (примерно 25 -35 MB/s)".Да. Здесь, наверное, можно просто простое сканирование на одну большую таблицу запустить (только с какой-нибудь агрегатной функцией, но чтоб было табличное сканированием плане), чтоб выяснить, на что система способна. Можно и нужно также поэкспериментировать с block-based буфером. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 23:52 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Альтернативный вариант получения HSJOIN без профиля - убить индекс на маленькую таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 23:56 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark BarinsteinYo.!пропущено... я так понимаю в плане 2, на каждую запись большой таблицы идет IXSCAN: (Index Scan) с PREFETCH: NONE. сканирование реально один блок читает, т.е. тот самый долбеж. разве нет ?Нет, не правильно. Большая таблица (описание доступа в операторе 3) - слева, маленькая - справа. Долбёж может быть по маленькой таблице, а точнее, по индексу маленькой таблицы. Конечно, если он закеширован, то всё должно быть ОК. А закеширован ли он? Я не уверен ни в чём. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 09:42 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Добрый день. к сожалению, временно не смогу поводить тесты в том объеме, что ранее. Понимаю, что звучит глупо, но это временно. Буду выкладывать по готовности. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 12:42 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark BarinsteinАльтернативный вариант получения HSJOIN без профиля - убить индекс на маленькую таблицу. Индекс на маленькую таблицу убил и получил новый план, но по прежнему с NL, но маленькая идет первой и в большой ищется по индексу. Профиль не прописывал. Но это только план, сам тест пока запустить не могу. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775. 776. 777. 778. 779. 780. 781. 782. 783. 784. 785. 786. 787. 788. 789. 790. 791. 792. 793. 794. 795. 796. 797. 798. 799. 800. 801. 802. 803. 804. 805. 806. 807. 808. 809. 810. 811. 812. 813. 814. 815. 816. 817. 818. 819. 820. 821. 822. 823. 824. 825. 826. 827. 828. 829. 830. 831. 832. 833. 834. 835. 836. 837. 838. 839. 840. 841. 842. 843. 844. 845. 846. 847. 848. 849. 850. 851. 852. 853. 854. 855. 856. 857. 858. 859. 860. 861. 862. 863. 864. 865. 866. 867. 868. 869. 870. 871. 872. 873. 874. 875. 876. 877. 878. 879. 880. 881. 882. 883. 884. 885. 886. 887. 888. 889. 890. 891. 892. 893. 894. 895. 896. 897. 898. 899. 900. 901. 902. 903. 904. 905. 906. 907. 908. 909.
2) Сделал копию большой таблицы с секционированием на 20 партиций. На тестах скорость чтения немного выше (40МБ/с), но в целом результат хуже. Эталонная выборка 2ч 30 минут, на партиционной почти 3 часа, но возможно какие либо погрешности. 3) Запустил команду вида: Код: plaintext
4) Команда: Код: plaintext
Увеличить SORTHEAP без отключения STMM у меня не очень получилось )). Возможно стоит вообще подумать об отключении STMM, но с другой стороны работает уже давно и дает какое то субъективное спокойствие (работает не трогай). Когда снова появятся ресурсы, сделаю остальное: а) Тестовю выгрузку по 1 пункту б) MDC на большую таблицу ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 17:13 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se4) Команда: Код: plaintext
я же говорил NL долбит маленькую табличку одноблочным IXSCAN: (Index Scan) добейся HASH JOIN и будет счастье. если результат ждешь дольше 30 минут, что-то не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 18:37 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Yo.!use-se4) Команда: Код: plaintext
я же говорил NL долбит маленькую табличку одноблочным IXSCAN: (Index Scan) добейся HASH JOIN и будет счастье. если результат ждешь дольше 30 минут, что-то не так. Ок. Спасибо большое. Я понял Вас еще по первому письму и пытаюсь к этому прийти. Да и подсказали уже относительно SORTHEAP. Ресурсы не всегда доступны для тестов и сейчас мне придется подождать. Но у меня к Вам тоже вопрос, почему на разных СХД с разной производительностью (DS5100 & Storwize v7000) одни и те-же времена выборки, а бывает и хуже? Так или иначе все равно приходится сканировать большую таблицу, выходит узкое место не в СХД? Тогда где? Если бы я видел хоть какое либо значительное потребление ресурсов, CPU к примеру, или еще чего. Мне кажется, что в данный момент я не могу даже правильно задать вопрос, наметив направление. Думаю как только будут результаты тестов, включас HS, будет проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 19:28 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seОк. Спасибо большое. Я понял Вас еще по первому письму и пытаюсь к этому прийти. Да и подсказали уже относительно SORTHEAP. Ресурсы не всегда доступны для тестов и сейчас мне придется подождать. Но у меня к Вам тоже вопрос, почему на разных СХД с разной производительностью (DS5100 & Storwize v7000) одни и те-же времена выборки, а бывает и хуже? Так или иначе все равно приходится сканировать большую таблицу, выходит узкое место не в СХД? Тогда где? Если бы я видел хоть какое либо значительное потребление ресурсов, CPU к примеру, или еще чего. Мне кажется, что в данный момент я не могу даже правильно задать вопрос, наметив направление. Думаю как только будут результаты тестов, включас HS, будет проще. не знаю как в db2, а в оракле мы врубаем трейс по которому все видно. с какой скорости читает и что читает. у меня часто такие эффекты были когда insert into select писал в таблицу с констреинтами и одноблочное чтение оказывается вообще долбит третью таблицу из-за foreign key. по трейсу все четко видно, где и что читает, каким способом. ничего не надо гадать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 20:34 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, Создаем таблицу профилей, если еще нету Код: sql 1. 2. 3. 4. 5. 6. 7.
optprof.xml Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
optprof.txt"SH1","PROF1","optprof.xml" q1.sql Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
db2 "IMPORT FROM optprof.txt OF DEL MODIFIED BY LOBSINFILE INSERT_UPDATE INTO SYSTOOLS.OPT_PROFILE" db2 "set current optimization profile SH1.PROF1" db2 "flush optimization profile cache SH1.PROF1" db2 -tf q1.sql Покажите план из exfmt.txt ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 20:50 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Yo.!я же говорил NL долбит маленькую табличку одноблочным IXSCAN: (Index Scan) добейся HASH JOIN и будет счастье. если результат ждешь дольше 30 минут, что-то не так.Многоблочное чтение маленькой таблицы закончится в самом начале сразу после построения хэш-индекса. Потом при скане большой таблицы вне зависимости от того, какой именно индекс будет использоваться - существующий или хэш - для каждой записи большой таблицы придется обращаться к одной из 5М записей по этому индексу, и тут уже никакого многоблочного обращения быть не может. Даже если всё хозяйство для маленькой таблицы будет в памяти, это далеко не бесплатная операция. Именно поэтому, скорее всего, оно и не может быстрее сканировать большую таблицу - не может быстрее обращаться в маленькую по индексу, каким бы эффективным он ни был. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 20:59 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se3) Запустил команду вида: Код: plaintext
4) Команда: Код: plaintext
use-seУвеличить SORTHEAP без отключения STMM у меня не очень получилось )). Возможно стоит вообще подумать об отключении STMM, но с другой стороны работает уже давно и дает какое то субъективное спокойствие (работает не трогай).Трудно помочь с такой диагностикой проблемы - "не получилось". :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 22:19 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark BarinsteinМногоблочное чтение маленькой таблицы закончится в самом начале сразу после построения хэш-индекса. Потом при скане большой таблицы вне зависимости от того, какой именно индекс будет использоваться - существующий или хэш - для каждой записи большой таблицы придется обращаться к одной из 5М записей по этому индексу, и тут уже никакого многоблочного обращения быть не может. Даже если всё хозяйство для маленькой таблицы будет в памяти, это далеко не бесплатная операция. Именно поэтому, скорее всего, оно и не может быстрее сканировать большую таблицу - не может быстрее обращаться в маленькую по индексу, каким бы эффективным он ни был. не верю. в оракле бы Yo.!не так. в оракле из pk маленькой таблицы построился бы хеш в памяти, потом пошел бы фуллскан большой. по мере чтения большой создавался бы хеш по pk и сравнивался с хеш-таблицой в памяти. если ключ не найдет в баню, если найден, в результирующий курсор нужные поля. таким образом он мог бы хоть петабайты большой таблицы читать и получить результат за адекватное время. думаю с 347 гб таблицы реально минут за 20 справиться по такой схеме. читать с HDD большую и параллельно сверять с хеш-таблицой в фоне думаю уже десятилетия не проблема. имхо все упирается в ограничения ио ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 23:10 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Хеш-джойн на оракле тем больше выгоден по сравнению с индексом, чем больше строк в таблице, которая стала хеш-таблицей. При условии, что всё влезло в память и хеш-функция адекватна для встретившихся данных (ну, свою в Oracle/DB2 мы всё равно задать не можем). Потому что доступ осуществляется "сразу", без прохода по дереву. Не видно причин, почему на DB2 должно быть по-другому. Смысл работы с хешем в том, чтобы индекс отменить, осуществлять не проход по страницам индекса с бинарным поиском на каждой, а доступ a la x := хештаблица[хешфункция(искомыйключ)], где x - это список найденных значений с одинаковым значением хешфункция(искомыйключ), и при "хорошей" хешфункции его размер "обычно" должен быть 0 или 1. Если поисками в small_tab перегружен процессор, можно подумать о параллельном выполнении сканирования big_tab. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 23:25 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Yo.!читать с HDD большую и параллельно сверять с хеш-таблицой в фоне думаю уже десятилетия не проблема. имхо все упирается в ограничения ио use-se4) Команда: select count(c1_id), count(c2_history_date), count(pay_status) from big_tab_part with ur читала со скоростью 450-550МБ/с, правда свалилась от арифм. переполнения, но оно и понятно (count_big). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 00:01 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaХеш-джойн на оракле тем больше выгоден по сравнению с индексом, чем больше строк в таблице, которая стала хеш-таблицей. При условии, что всё влезло в память и хеш-функция адекватна для встретившихся данных (ну, свою в Oracle/DB2 мы всё равно задать не можем). Потому что доступ осуществляется "сразу", без прохода по дереву. Не видно причин, почему на DB2 должно быть по-другому. Смысл работы с хешем в том, чтобы индекс отменить, осуществлять не проход по страницам индекса с бинарным поиском на каждой, а доступ a la x := хештаблица[хешфункция(искомыйключ)], где x - это список найденных значений с одинаковым значением хешфункция(искомыйключ), и при "хорошей" хешфункции его размер "обычно" должен быть 0 или 1. Если поисками в small_tab перегружен процессор, можно подумать о параллельном выполнении сканирования big_tab.Логически это то же индексирование, только сделанное немного по другому. Поиск одного знчения из миллионов "сразу" не бывает при любом подходе. Заставить оптимизатор "присмотреться" к HS без профиля можно, значительно увеличив SORTHEAP, конечно. Несколько агентов (intra-parallelism) должны, конечно, помочь. Но ТС писал, что это не особо помогает, хотя я бы убедился в том, что в его тестах параллелизм действительно работает (план запроса надо получать из package cache в этом случае). В этом конкретном случае хорошо помогла бы DPF - обе таблицы распределяются по ключу соединения, соединение на каждом разделе локальное. Очень хорошо должно параллелизоваться... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 11:07 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-se, Создаем таблицу профилей... ... Покажите план из exfmt.txt В таком варианте план подрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 11:45 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, Бессмысленно использовать HSJOIN в этой ситуации, как видно из цены запроса в плане, пока: Код: plaintext
Увеличте SORTHEAP до, скажем, 50000 (4K страниц) или даже 100000 и повторите получение плана запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 12:21 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, Вы можете попробовать получить план запроса даже на другом сервере db2 с гораздо меньшими характеристиками, даже на пустых таблицах, но с загруженной статистикой с промышленной системы. Для этого вам надо: - выгрузить DDL для каждой таблицы со статистикой: db2look -d mydb -e -m -z SH1 -t BIG_TAB -o BIG_TAB.ddl db2look -d mydb -e -m -z SH2 -t SMALL_TAB -o SMALL_TAB.ddl - выполнить команды из файлов в тестовой БД - установить характеристики пром. системы на тесте с помощью db2fopt (значения для opt_* взять из шапки плана запроса) Дальше вы можете получать планы запроса на тестовой системе, играться там с опт. профилями, сравнивая цену запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 12:36 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-se, Вы можете попробовать получить план запроса даже на другом сервере db2 с гораздо меньшими характеристиками, даже на пустых таблицах, но с загруженной статистикой с промышленной системы. Для этого вам надо: - выгрузить DDL для каждой таблицы со статистикой: db2look -d mydb -e -m -z SH1 -t BIG_TAB -o BIG_TAB.ddl db2look -d mydb -e -m -z SH2 -t SMALL_TAB -o SMALL_TAB.ddl - выполнить команды из файлов в тестовой БД - установить характеристики пром. системы на тесте с помощью db2fopt (значения для opt_* взять из шапки плана запроса) Дальше вы можете получать планы запроса на тестовой системе, играться там с опт. профилями, сравнивая цену запроса. Болшое спасибо за помощь и за советы. Я к сожалению сам по себе "небыстрая лань", но и в добавок бываю периоды, когда приходится заниматься многоми задачами в параллель. Поэтому прошу простить за задержки. Это план с 100 000 страницами сортировки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713.
Думаю картина без dbm & db параметров все равно будет не полной. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 14:07 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, Сравнение 2-х планов Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Суда по цене запроса план с HSJOIN имеет заметно меньшую цену, когда вы значительно расширили SORTHEAP. Теперь можно попробовать без профиля попробовать (должно выбрать HSJOIN) и время выполнения с HSJOIN. Ну и всё же с intra-parallel тоже надо бы попробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 14:26 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-se, Суда по цене запроса план с HSJOIN имеет заметно меньшую цену, когда вы значительно расширили SORTHEAP. Теперь можно попробовать без профиля попробовать (должно выбрать HSJOIN) и время выполнения с HSJOIN. Ну и всё же с intra-parallel тоже надо бы попробовать. Мда, результат есть, ранее лучшее время было 2ч 30м - сейчас 38минут, и таки да, я увидел скорость чтения 100-300 стабильно и в пике 700мб/с. Большое спасибо всем кто помог и учавствовал. И что же делать с SORTHEAP и остальными автоматическими настройками? Отказаться, или каждый раз перед тяжелыми задачами менять SORTHEAP, SHEAPTHRES_SHR, LOCKLIST и пр.? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 16:56 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seИ что же делать с SORTHEAP и остальными автоматическими настройками? Отказаться, или каждый раз перед тяжелыми задачами менять SORTHEAP, SHEAPTHRES_SHR, LOCKLIST и пр.? Хороший вопрос... Если это преимущественно транзакционная система, то такой большой SORTHEAP может "скрывать" проблемы приложений. Транзакционые запросы не должны делать большие сортировки. Если при маленьком SORTHEAP вы можете отловить такие запросы по кол-ву переполнений сортировок (SORT_OVERFLOWS), то при большом вы их, скорее всего, не увидите, этих переполнений. И вам придется обнаруживать такие запросы по другим признакам, например, по заметному TOTAL_SECTION_SORT_TIME. Это если вы вообще этим занимаетесь... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 18:32 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seMark Barinsteinuse-se, Суда по цене запроса план с HSJOIN имеет заметно меньшую цену, когда вы значительно расширили SORTHEAP. Теперь можно попробовать без профиля попробовать (должно выбрать HSJOIN) и время выполнения с HSJOIN. Ну и всё же с intra-parallel тоже надо бы попробовать. Мда, результат есть, ранее лучшее время было 2ч 30м - сейчас 38минут, и таки да, я увидел скорость чтения 100-300 стабильно и в пике 700мб/с. Большое спасибо всем кто помог и учавствовал. И что же делать с SORTHEAP и остальными автоматическими настройками? Отказаться, или каждый раз перед тяжелыми задачами менять SORTHEAP, SHEAPTHRES_SHR, LOCKLIST и пр.? Я помню в моих экспериментах, что HSJOIN DB2 в плане показывала не в том порядке, что Oracle (при примерно одинаковом выполнении). Так что или я глючу и всё напутал, или имеет смысл попробовать поменять порядок: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Кроме того, мы всё ещё не увидели вариант с MDC, который имеет шансы быть самым быстрым. MDC, де-факто, это IOT (Index Organized Table), только когда в обычном индексе вы при поиске c1_id получаете строку (или несколько строк с равным c1_id), здесь вы найдёте сразу экстент (или набор экстентов) с равным c1_id, к чему можно применить многоблочное чтение. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2016, 23:08 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-seИ что же делать с SORTHEAP и остальными автоматическими настройками? Отказаться, или каждый раз перед тяжелыми задачами менять SORTHEAP, SHEAPTHRES_SHR, LOCKLIST и пр.? Хороший вопрос... Если это преимущественно транзакционная система, то такой большой SORTHEAP может "скрывать" проблемы приложений. Транзакционые запросы не должны делать большие сортировки. Если при маленьком SORTHEAP вы можете отловить такие запросы по кол-ву переполнений сортировок (SORT_OVERFLOWS), то при большом вы их, скорее всего, не увидите, этих переполнений. И вам придется обнаруживать такие запросы по другим признакам, например, по заметному TOTAL_SECTION_SORT_TIME. Это если вы вообще этим занимаетесь... Основную массу занимают сравнительно небольшие транзакционные запросы и до недавнего времени я вообще считал, что у меня все работает как надо. Сейчас думаю несколько иначе. В принципе, я понимаю в какую сторону нужно двигаться, буду делать ревизию всего. Victor MetelitsaКроме того, мы всё ещё не увидели вариант с MDC, который имеет шансы быть самым быстрым. Да Вы правы за мной должок: 1) Тест с MDC по С1 2) Тест с профилем, который Вы предложили в последнем письме 3) Не уверен, что нужен тест с HJ на FlashSystem, но если кого заинтересует то сделаю 4) Думаю все же сделать тест с профилем NL, и индексом на малую таблицу (первый/старый план), и с увеличенным SORTHEAP 5) С включенным INTRA_PARALLEL=YES Только прошу не ожидать от меня быстрых результатов, тесты буду делать в свободное от работы время и по доступности ресурсов. Еще раз всем большое спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 11:37 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaЯ помню в моих экспериментах, что HSJOIN DB2 в плане показывала не в том порядке, что Oracle (при примерно одинаковом выполнении).Да, это так. DB2 build (или inner) сторону (маленькую таблицу) показывает справа, в отличие от Oracle. У DB2 правило - outer таблица join'а - слева, inner - справа. Victor MetelitsaКроме того, мы всё ещё не увидели вариант с MDC, который имеет шансы быть самым быстрым. MDC, де-факто, это IOT (Index Organized Table), только когда в обычном индексе вы при поиске c1_id получаете строку (или несколько строк с равным c1_id), здесь вы найдёте сразу экстент (или набор экстентов) с равным c1_id, к чему можно применить многоблочное чтение. Статистика по C1_ID большой таблицы: Number of distinct column values: 200 644 459 (из 5 242 341 755) Для MDC очень опасная ситуация - в среднем по 25 значений на один id. Даже с минимальными pagesize = 4 K и extent size = 2 это будет очень большая трата дискового места зря - 8K для 25 коротких записей. Я бы очень не рекомендовал использовать MDC здесь - у поля слишком высокая кардинальность. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 17:17 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Проверил и убедился, что таки сглючил Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
и поленился просчитать MDC. Правда, у меня тут же возникла мысль делать MDC не по C1_ID, а по выражению вроде C1_ID/1000 (и для верности прибавить h. C1_ID/1000=l. C1_ID/1000 в условие), но, хотя растрату пространства таким способом можно радикально уменьшить, выигрыш в скорости под сомнением. По-видимому, он будет, если диапазон возможных значений C1_ID в маленькой таблице "радикально" меньше диапазона в большой. В таком случае "нужные" строчки сконцентрируются в относительно небольшом количестве экстентов. В целом, сомнительная затея. Ну, а кусок буферного пула под крупноблочность в любом случае должно быть полезно выделить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2016, 18:33 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Кстати, поскольку речь шла не о простой выборке, а о выборке со вставкой в таблицу, ограничивать могут транзакционные логи и чистка грязного буферного пула. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 09:33 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaКстати, поскольку речь шла не о простой выборке, а о выборке со вставкой в таблицу, ограничивать могут транзакционные логи и чистка грязного буферного пула. Там NOT LOGGED INITIALLY. Относительно MDC, получается что таблица займет примерно 1.6 ТБ? С практичекой точки зрения это не применимо. Поскольку таблицу все равно придется читать полностью, то и скорость выборки не уверен что вырастет. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 12:30 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Ну да, Марк показал, что MDC не годится, а я поленился подсчитать. Но чисткой буферного пула стоит поинтересоваться. Насколько я его понимаю, запись из пула на диск всегда мелкоблочная, то бишь страничная. См. num_iocleaners http://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.5.0/com.ibm.db2.luw.admin.config.doc/doc/r0000332.html DB2_USE_ALTERNATE_PAGE_CLEANING http://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.5.0/com.ibm.db2.luw.admin.regvars.doc/doc/r0005665.html и т.п. По-хорошему, конечно, следовало бы сперва посмотреть мониторингом на то, во что оно таки упирается. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 14:33 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaНу да, Марк показал, что MDC не годится, а я поленился подсчитать. Но чисткой буферного пула стоит поинтересоваться. Насколько я его понимаю, запись из пула на диск всегда мелкоблочная, то бишь страничная. См. num_iocleaners http://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.5.0/com.ibm.db2.luw.admin.config.doc/doc/r0000332.html DB2_USE_ALTERNATE_PAGE_CLEANING http://www.ibm.com/support/knowledgecenter/en/SSEPGG_10.5.0/com.ibm.db2.luw.admin.regvars.doc/doc/r0005665.html и т.п. По-хорошему, конечно, следовало бы сперва посмотреть мониторингом на то, во что оно таки упирается. Спасибо за подсказку, но пока не планирую совершать каких либо резких движений. 1) За время обсуждения данной проблемы мои взгляды на текущее состояние БД сильно пошатнулись и мне сейчас гораздо важнее найти другие проблемы, которые сейчас для меня не видны. К примеру, те же планы запросов пересмотреть с увеличенными SORTHEAP и пр. Нужно разобраться с использованием временых TS. 2) БД преймущественно OLTP и рассматриваемый запрос запускается 1 раз в сутки. Сейчас стоит вот так: Код: plaintext 1.
Пока в планах попробовать отказаться от STMM. Кстати, параметр NUM_IOCLEANERS практически всегда держится на ~40 и практически не плавает. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 17:43 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Полезно же понять, что запрос упирается именно во вставку (или не упирается), в том числе в сопутствущую чистку буферов, пусть и не делая никаких "резких движений". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 18:19 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor MetelitsaПолезно же понять, что запрос упирается именно во вставку (или не упирается), в том числе в сопутствущую чистку буферов, пусть и не делая никаких "резких движений". Вы абсолютно правы. Просто, нужно хотя бы сделать те тесты, что я описал ранее. И вот прошел день, а я даже не начинал, то одно то другое и все вроде важное. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 19:38 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor Metelitsaпропущено... Я помню в моих экспериментах, что HSJOIN DB2 в плане показывала не в том порядке, что Oracle (при примерно одинаковом выполнении). Так что или я глючу и всё напутал, или имеет смысл попробовать поменять порядок: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
пропущено.... 2) Вот план запроса, если в профиле поменять местами таблицы (inner,outer) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713.
5) Сделал отдельный bufferpool на 200 000 страниц с numblockpages 50 000 для TS большой таблицы. Включил intra_parallel. Включил monitor switches, сделал выборку. Время выборки уменьшилось с 38 минут до 35. План запроса тут: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748. 749. 750. 751. 752. 753. 754. 755. 756. 757. 758. 759. 760. 761. 762. 763. 764. 765. 766. 767. 768. 769. 770. 771. 772. 773. 774. 775.
Снял снимок Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245.
если честно, то я не понял есть ли какие либо ограничения в выборке и в чем они выражаются. Возможно следует смотреть не через snapshot а посредством иных инструментов, подскажите если что... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 15:09 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, Сколько времени выполняется теперь запрос ниже, каков его план? SELECT count(h.PAY_STATUS) FROM SH1.BIG_TAB h, SH2.SMALL_TAB l WHERE h.C1_ID = l.C1_ID WITH UR Он должен гораздо быстрее выполняться... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 21:48 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-se, Сколько времени выполняется теперь запрос ниже, каков его план? SELECT count(h.PAY_STATUS) FROM SH1.BIG_TAB h, SH2.SMALL_TAB l WHERE h.C1_ID = l.C1_ID WITH UR Он должен гораздо быстрее выполняться... Запрос выполняется 19 минут. Его план тут: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. 363. 364. 365. 366. 367. 368. 369. 370. 371. 372. 373. 374. 375. 376. 377. 378. 379. 380. 381. 382. 383. 384. 385. 386. 387. 388. 389. 390. 391. 392. 393. 394. 395. 396. 397. 398. 399. 400. 401. 402. 403. 404. 405. 406. 407. 408. 409. 410. 411. 412. 413. 414. 415. 416. 417. 418. 419. 420. 421. 422. 423. 424. 425. 426. 427. 428. 429. 430. 431. 432. 433. 434. 435. 436. 437. 438. 439. 440. 441. 442. 443. 444. 445. 446. 447. 448. 449. 450. 451. 452. 453. 454. 455. 456. 457. 458. 459. 460. 461. 462. 463. 464. 465. 466. 467. 468. 469. 470. 471. 472. 473. 474. 475. 476. 477. 478. 479. 480. 481. 482. 483. 484. 485. 486. 487. 488. 489. 490. 491. 492. 493. 494. 495. 496. 497. 498. 499. 500. 501. 502. 503. 504. 505. 506. 507. 508. 509. 510. 511. 512. 513. 514. 515. 516. 517. 518. 519. 520. 521. 522. 523. 524. 525. 526. 527. 528. 529. 530. 531. 532. 533. 534. 535. 536. 537. 538. 539. 540. 541. 542. 543. 544. 545. 546. 547. 548. 549. 550. 551. 552. 553. 554. 555. 556. 557. 558. 559. 560. 561. 562. 563. 564. 565. 566. 567. 568. 569. 570. 571. 572. 573. 574. 575. 576. 577. 578. 579. 580. 581. 582. 583. 584. 585. 586. 587. 588. 589. 590. 591. 592. 593. 594. 595. 596. 597. 598. 599. 600. 601. 602. 603. 604. 605. 606. 607. 608. 609. 610. 611. 612. 613. 614. 615. 616. 617. 618. 619. 620. 621. 622. 623. 624. 625. 626. 627. 628. 629. 630. 631. 632. 633. 634. 635. 636. 637. 638. 639. 640. 641. 642. 643. 644. 645. 646. 647. 648. 649. 650. 651. 652. 653. 654. 655. 656. 657. 658. 659. 660. 661. 662. 663. 664. 665. 666. 667. 668. 669. 670. 671. 672. 673. 674. 675. 676. 677. 678. 679. 680. 681. 682. 683. 684. 685. 686. 687. 688. 689. 690. 691. 692. 693. 694. 695. 696. 697. 698. 699. 700. 701. 702. 703. 704. 705. 706. 707. 708. 709. 710. 711. 712. 713. 714. 715. 716. 717. 718. 719. 720. 721. 722. 723. 724. 725. 726. 727. 728. 729. 730. 731. 732. 733. 734. 735. 736. 737. 738. 739. 740. 741. 742. 743. 744. 745. 746. 747. 748.
я немного не понял "быстрее" относительно какого запроса, с агрегированием данных, но выполненным ранее? Дело в том, что в базовом запросе данные клиенту тоже не возвращаются, а вставляются в таблицу, выглядит это примерно так: Код: plsql 1. 2.
и тесты я соответственно делаю такие же. Опять же я немного не понимаю суть intra_parallel и как DB2 выбирает эту параллельность. К примеру сейчас, для теста, я разбил TS на 10 контейнеров, раскидал их по разным логическим дискам (правда в пределах одного массива на СХД), 40 CPU (условно), все свободно, но насколько я понял из плана, параллельность = 2. ??? Практически цель вопроса, ускорить выгрузку, достигнута, 35 минут это хороший даже отличный результат, за что Вам и всем кто принимал участие большое спасибо, но есть одна небольшая проблема, теперь поселился червячок сомнения, а вдруг, что то еще не так и возможно производильность может быть и выше ))) Вот кстати, еще 1 вопрос сомнений. Сейчас (на БД, СХД DS5100) стоит: OVERHEAD=12.67, TRANSFERRATE=0.18 для TS, и фактически эти параметры переносятся вместе c backup на копии для тестов, Storwize v7000 и FlashSystem. Я думаю, что эти параметры влияют только на выбор планов, но вдруг и на что то еще? 1) Нужно ли менять эти 2 параметра при переносе БД? 2)Какова методика расчета этих параметров для БД или нужно искать в документации на железо, может просто есть где то рекомендации IBM где в табличке приведены DB2 & СХД? Вот такие сомнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 12:15 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, Можете попробовать: Код: sql 1. 2.
OVERHEAD, TRANSFERRATE: Table space impact on query optimization В плане у вас: Код: plaintext
db2 выделяет для работы N агентов, которые патаются выполнять работу параллельно, передавая результаты своей работы координирующему агенту. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 15:38 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, 38 минут однозначно долго. как я понял хеш таблица на диск пишется, т.е. HJ вместо read-ahead по большой таблице читает то временную хеш-таблицу, то большую таблицу. надо добиться, что бы хеш таблица от чтения маленькой таблицы умещалась в память, тогда еще в несколько раз быстрее будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 16:30 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Yo.!use-se, 38 минут однозначно долго. как я понял хеш таблица на диск пишется, т.е. HJ вместо read-ahead по большой таблице читает то временную хеш-таблицу, то большую таблицу. надо добиться, что бы хеш таблица от чтения маленькой таблицы умещалась в память, тогда еще в несколько раз быстрее будет. Не пишется хеш ни маленькой не большой таблицы, иначе была бы заметна запись на диск в темповый TS. Да и из плана видно, что inner(правая) это маленькая таблица. И на снимке я не увидел чтобы как то использовалась временная область. Однако, я подумал, что 38 минут это хорошо, Вы сказали - плохо. ))) Опять есть о чем думать. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 16:44 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Mark Barinsteinuse-se, Можете попробовать: Код: sql 1. 2.
OVERHEAD, TRANSFERRATE: Table space impact on query optimization В плане у вас: Код: plaintext
db2 выделяет для работы N агентов, которые патаются выполнять работу параллельно, передавая результаты своей работы координирующему агенту. Пробовал я ранее делать Load, параметры были немного другими. Там другая проблема, я уже писал об, виснет наглухо процесс db2syscs, вот так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Про параметры TS видел, но думал может есть рекомендации конкретно по каждому СХД. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 16:55 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-se, Оттаял процесс, суммарно load длился 1 час 16 м ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2016, 17:31 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seВот кстати, еще 1 вопрос сомнений. Сейчас (на БД, СХД DS5100) стоит: OVERHEAD=12.67, TRANSFERRATE=0.18 для TS, и фактически эти параметры переносятся вместе c backup на копии для тестов, Storwize v7000 и FlashSystem. Я думаю, что эти параметры влияют только на выбор планов, но вдруг и на что то еще? 1) Нужно ли менять эти 2 параметра при переносе БД? 2)Какова методика расчета этих параметров для БД или нужно искать в документации на железо, может просто есть где то рекомендации IBM где в табличке приведены DB2 & СХД? Вот здесь (правда для SAP'а) для IBM Flash System рекомендуется : OVERHEAD = 0.3 TRANSFERRATE = 0.1 Для сторвайзов будет зависеть от того на каком конкретно пуле (HDD, SSD, гибридный) будут лежать соответствующие VDISK'и Также для сторвайзов рекомендуется использовать число VDISK'ов кратное 4-ем. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2016, 12:55 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Параметры OVERHEAD и TRANSFERRATE используются для вычисления стоимости. Пример OVERHEAD=12.67 миллисекунд TRANSFERRATE=0.18 миллисекунд на страницу размер страницы 4К размер экстента 4 страницы Тогда в 1 мебайте 256 страниц, при линейном чтении (без overhead) это оценивается, что прочитается примерно за 256*0.18 = 46 миллисекунд, т.е. скорость оценивается 21 мег в секунду. Но если мы прочитаем это постранично случайным доступом, время оценивается как 256*(12.57+0.18)= 3264 миллисекунд (3.264 секунды), в 71 раз медленнее линейного чтения. Но если мы прочитаем это поэкстентно, время оценивается как 64*12.57+256*0.18 = 851 миллисекунда, в 18 раз медленнее линейного чтения. DB2-шные таймероны, в которых указана стоимость, как я понимаю, это и есть расчётные миллисекунды. Эти цифры OVERHEAD=12.67 миллисекунд TRANSFERRATE=0.18 миллисекунд на страницу не мне кажутся адекватными для данного случая. Но я не знаю, как получить параметры, особенно на системах хранения, кроме как воспользовавшись как IOmeter'ом или ORION'ом (а ORION ныне идёт только в комплекте с Oracle Server). Надо ещё прибавить, что чем больше одновременных запросов (из разных процессов или нитей) наваливается на диски, тем OVERHEAD больше (растёт в разы), но оптимизатор про это не знает. Ну, и в статье, которую я недавно читал про оптимизатор (в поисках DB2 LEO), автор заявил, что эти цифры не очень важны, а настоящая проблема в оценке cardinality у предикатов. В самом деле, от этого очень сильно зависит, когда индекс нужен, когда не нужен, когда nested loop join использовать и когда hash join и в каком порядке. Жестокая борьба ведётся (Ораклем!), но результаты ... неоднозначные. Ещё надо иметь в виду ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2016, 00:35 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
use-seMark Barinsteinuse-se, Сколько времени выполняется теперь запрос ниже, каков его план? SELECT count(h.PAY_STATUS) FROM SH1.BIG_TAB h, SH2.SMALL_TAB l WHERE h.C1_ID = l.C1_ID WITH UR Он должен гораздо быстрее выполняться... Запрос выполняется 19 минут. А вставка 30. Напрашивается мысль о сильном влиянии чистки грязного буферного пула. Но нужен мониторинг диска и процессоров, чтобы это подтвердить. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.10.2016, 00:37 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
mitekuse-seВот кстати, еще 1 вопрос сомнений. Сейчас (на БД, СХД DS5100) стоит: OVERHEAD=12.67, TRANSFERRATE=0.18 для TS, и фактически эти параметры переносятся вместе c backup на копии для тестов, Storwize v7000 и FlashSystem. Я думаю, что эти параметры влияют только на выбор планов, но вдруг и на что то еще? 1) Нужно ли менять эти 2 параметра при переносе БД? 2)Какова методика расчета этих параметров для БД или нужно искать в документации на железо, может просто есть где то рекомендации IBM где в табличке приведены DB2 & СХД? Вот здесь (правда для SAP'а) для IBM Flash System рекомендуется : OVERHEAD = 0.3 TRANSFERRATE = 0.1 Для сторвайзов будет зависеть от того на каком конкретно пуле (HDD, SSD, гибридный) будут лежать соответствующие VDISK'и Также для сторвайзов рекомендуется использовать число VDISK'ов кратное 4-ем. Большое спасибо. Попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2016, 14:29 |
|
Есть ли ограничения на максимальную скорость выборки данных из одного табличного пространс
|
|||
---|---|---|---|
#18+
Victor Metelitsause-seпропущено... Запрос выполняется 19 минут. А вставка 30. Напрашивается мысль о сильном влиянии чистки грязного буферного пула. Но нужен мониторинг диска и процессоров, чтобы это подтвердить. Мне кажется, что при использовании агрегатных функци, DB2 несколько иначе обрабатывает строки, возможно я ошибаюсь. Если вместо вставки в таблицу использовать экспорт на диск, то суммарно время выборки незначительно но возрастает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2016, 14:56 |
|
|
start [/forum/topic.php?all=1&fid=43&tid=1600519]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
122ms |
get tp. blocked users: |
1ms |
others: | 9ms |
total: | 221ms |
0 / 0 |