|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Сомнительно что таблица с 1 полем претендует на реляционную. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 13:39 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Эта временная таблица нужна для ORM, когда у него получается запрос с большим количеством условий. Например, чтобы не городить гигантский запрос с where xxx in (...), он загоняет эти значения во временную таблицу и джойнит её с таблицей в запросе. На самом деле таких временных таблиц много. Есть временные таблицы для разных типов данных. И их по 10 штук для каждого типа данных на всякий случай. Размер 256 был выбран хоть и "от балды", но после внимательного просмотра данных, которые могут участвовать в условиях при генерации запросов через ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 13:39 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
29.03.2021 13:39, ArtDen пишет: > Эта временная таблица нужна для ORM. вот он - корень зла! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 15:36 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen, Тогда для этой таблицы не хватает одного поля "идентификатор сессии" - для того чтобы можно эту таблицу можно было использовать одновременно для нескольких запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 15:38 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, Не совсем понял. Таблица же временная. Заполнили, выполнили запрос, а при коммите она автоматом очистилась. Зачем там ещё "идентификатор сессии"? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 15:46 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen, Например один и тот же запрос выполнить в соседних окнах. И затем сравнить у меня это поле есть id_session (заполняется соответствующим генератором), и для всей "порции данных" он одинаковый Т.е. Запрос выглядит следующим образом Код: sql 1. 2.
В этом случае можно делать подобный select по нескольким полям, пользуясь единственной таблицей Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 15:50 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Шавлюк Евгений, У меня нету необходимости в "запрос выполнить в соседних окнах. И затем сравнить" )) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 15:59 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen Шавлюк Евгений, У меня нету необходимости в "запрос выполнить в соседних окнах. И затем сравнить" )) Давай в топик более полную постановку. Просто возникает мысль что ты делаешь какой-то антипаттерн. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 16:34 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
29.03.2021 16:34, mayton пишет: > Просто возникает мысль что ты делаешь какой-то антипаттерн. на ORM-е все паттерны анти Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 16:41 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Ну почему-же. Для forms-приложений ORM вполне себе подходит. И для тех доменных областей где очень много описания идет не из бд а из некой третьей системы. В виде DSL. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 16:55 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
maytonДавай в топик более полную постановку. Ты что, не веришь, что ему надо выбирать из базы 100 тысяч объектов, заданных произвольным списком, натыканным пользователем вручную?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 17:14 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov maytonДавай в топик более полную постановку. Ты что, не веришь, что ему надо выбирать из базы 100 тысяч объектов, заданных произвольным списком, натыканным пользователем вручную?.. ХЗ. Всяко бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 17:47 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
mayton Давай в топик более полную постановку. Просто возникает мысль что ты делаешь какой-то антипаттерн. Я не понимаю какую тебе постановку надо. И этот антипатер я не делаю. Он давно уже сделан и работает. Есть сервак с 3хзвенкой. На нём крутиться наш сервис. Сервис в качестве СУБД по желанию клиента может использовать разные СУБД, в том числе FB. Чаще всего с FB он и используется. Сервак многофункциональный. В том числе для него есть API, чтобы получать данные. И данные, получаемые от сервиса, и условия запросов могут быть совершенно произвольными (но в рамках объектов ORM). Например: я хочу получить фамилии работников, которые обрабатывали материл по контролю за разработкой со скважин таких-то месторождений, в период такой-то. Или: выдай мне 3-мерные координаты пересечений пласта АС4 со стволами скважин, список скважин такой-то. Или: нужны результаты интерпретации скважин, в частности пористость, список скважин такой-то, список названий методов исследования такой-то ну и плюс дофига всяких вариантов, которые только можно напридумывать. Основной клиент, который пользуется этим сервисом - ещё одна система, которая у меня в организации и разрабатывается. Причём ни одно значение в эту базу не вбивается вручную. Все данные попадают туда путём индексирования файлов-результатов работы большого количества работников. Этим индексированием тоже занимается наш сервис, который знает как парсить исходные файлы и как распихивать эту инфу по базе. Просто недавно выяснилось, что количество параметров условий в запросе может быть очень большим (например при просмотре пользователями карты скважин больших месторождений). Из-за этого и был написан пост. Так какие у тебя идеи как победить этот "антипатерн"? )) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 18:34 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDenПросто недавно выяснилось, что количество параметров условий в запросе может быть очень большим (например при просмотре пользователями карты скважин больших месторождений). В базе скважины не привязаны к месторождениям что для построения этой карты их приходится все перечислять вручную?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 18:46 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Могут быть привязаны, могут быть не привязаны, могут быть привязаны хитрым образом. Всё зависит от того, как это было проиндексировано. Это не особо важно. Важно то, что прога, которая показывает карту (и которая частично для отображения карты использует наш сервис), просто запрашивает данные по куче скважин по их уникальному идентификатору, присвоенному нефтяной компанией. И не обязательно это будут скважины одного месторождения. Вроде как возможен вариант, когда на экране будут скважины с разных месторождений, если они умещаются на экране. Я сам не спец по этим картам, отвечаю только за работу с СУБД, индексирование и сетевой протокол для сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 18:57 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDenВажно то, что прога, которая показывает карту (и которая частично для отображения карты использует наш сервис), просто запрашивает данные по куче скважин по их уникальному идентификатору, присвоенному нефтяной компанией. Понятно. А перед этим она, надо полагать, запрашивает полный список всех скважин, чтобы определить видна ли каждая из них в данный момент на экране или нет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 19:07 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen Так какие у тебя идеи как победить этот "антипатерн"? )) Есть идея - кластеризовать эти твои наборы. Скорее всего в них есть штук 10 базовых. И по этим базовым наборам имеет смысл разбить основную таблицу на разделы. Или фасеты. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 19:31 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Нет. Вроде как полный список для скважин, которые умещаются на экране при данном масштабе. запрашивается из какой-то не нашей системы. Не суть. Важно, что у нашего сервиса в любой момент могут запросить какую-нибудь фигню, указывая в условиях фильтрации 100500 значений mayton, Основной таблицы нету. Временная таблица может джойниться с любой таблицей из запроса, генерённого ORM, если по ней есть много условий. Мало того, может быть ситуация, когда используется дофига временных таблиц. Они заполняются и джойняться с разными таблицами из 100-этажного запроса. Тут как повезёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 19:50 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen mayton, Основной таблицы нету. Временная таблица может джойниться с любой таблицей из запроса, генерённого ORM, если по ней есть много условий. Мало того, может быть ситуация, когда используется дофига временных таблиц. Они заполняются и джойняться с разными таблицами из 100-этажного запроса. Тут как повезёт. Смотри. До того как ты построил 100-колёсный велосипед. Я не специалист в Firebird. Я вобщем - больше по Ораклу и то в прошлом. Но я тебе советую взять на вооружение несколько принципов принципа работы с БД. Первое - в средне-статистической БД 80% нагрузки приходится на SELECT а не на DML операции. Исходя из этого (почти Паретто-) принципа нужно концентрировать свои усилия не на задачах CTAS или загрузок а на том как РАЗЛОЖИТЬ данные на продуктовой БД чтобы выборка была мгновенной. Я не верю что в твоей задаче именно insert является проблемой. Если он - проблема - то это уже очень-очень плохо. Тоесть плохо стало гораздо раньше. И второе. Данные - должны быть стационарны настолько это возможно. Не нужно их двигать. Уплотнять. Переосоздавать. Делать временные таблички. Это все - суета. База любит тишину и постоянство. Я не знаю поддерживает ли FireBird материализовнные представления. Если есть - попробуй. В случае с твоими динамическими справочниками - создай их 1 раз в жизни и трекай изменения. Создай базовый набор (штук 5-10) который покроет все интересы. Я убежден - это можно. Все остальные наборы должны быть просто комбинациями этих базовых. И еще. Денормализовывать можно. Если это идет на пользу скорости и это подконтрольно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 20:04 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
mayton Первое - в средне-статистической БД 80% нагрузки приходится на SELECT а не на DML операции. Исходя из этого (почти Паретто-) принципа нужно концентрировать свои усилия не на задачах CTAS или загрузок а на том как РАЗЛОЖИТЬ данные на продуктовой БД чтобы выборка была мгновенной. Я не верю что в твоей задаче именно insert является проблемой. Если он - проблема - то это уже очень-очень плохо. Тоесть плохо стало гораздо раньше. С этим я согласен на 146 процентов. mayton И второе. Данные - должны быть стационарны настолько это возможно. Не нужно их двигать. Уплотнять. Переосоздавать. Делать временные таблички. А вот с этим не согласен. На то они и временные таблицы, чтобы их заполнять данными и извращаться ради того, чтобы получить то, что тебе нужно )) mayton В случае с твоими динамическими справочниками - создай их 1 раз в жизни и трекай изменения. Создай базовый набор (штук 5-10) который покроет все интересы А вот это я совсем не понял. Что за динамические справочники и как они могут помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 20:21 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
ArtDen А вот это я совсем не понял. Что за динамические справочники и как они могут помочь. У тебя дальше после многоточия что идет? Код: sql 1.
as select? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 20:24 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
mayton, нет конечно. Firebird такого не поддерживает. У нас GTT это таблица с постоянными метаданными, её не надо каждый раз пересоздавать ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 20:27 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
mayton, ты лучше суть объясни того, что сказать хотел. А временные таблицы для строк конкретно под FB в моём случае создаются запросами типа Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 20:30 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
Ну ты насоздавал таблиц TMP_S_0, TMP_S_2 и так далее. И у тебя каждый пользователь захватывает по табличке. Верно? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 20:47 |
|
Нужен быстрый insert во временную таблицу
|
|||
---|---|---|---|
#18+
mayton, Ты ничего не понял. Параллельно в разных транзакциях могут заполняться и использоваться и одни и те же временные таблицы. Например: 1-я транзакция использует TMP_S_0 2-я транзакция использует TMP_S_0, TMP_S_1, TMP_S_2, TMP_S_3, TMP_S_4, TMP_S_5 + временные таблицы для других типов данных 3-я транзакция использует TMP_S_0, TMP_S_1 4-й транзакции повезло, т.к. условий в запросе к сервису мало и все они влезли в текст SQL 5-я ... и т.д. Вот так-то так. Причём в разных транзакциях джойн одной и той же временной таблицы может происходить с любой из реальных таблиц базы ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2021, 21:02 |
|
|
start [/forum/search_topic.php?author=Spy+II&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
151ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 691ms |
total: | 973ms |
0 / 0 |