|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
а физически не на одну ли тачку взгромоздили Firebird SQL и MS SQL? Потому как если это так, то можно пеплом присыпать себе всё... Метра на два. Firebird будет на правах падчерицы по ресурсам в этой ситуации. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:09 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
MolochnikВсе время же везти не может Может. MolochnikЯ глушу там просто на всякий случай, по инерции, по логике хуже не будет. Ну да. Подумаешь: незамеченный конфликт. Это всего лишь означает, что одна и та же запись будет обработана несколько раз разными потоками. Ничего страшного, просто из-за долгого времени обработки одной записи обработка всех записей будет в несколько раз дольше. Стоп! Уж не на это ли ты жаловался?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 14:44 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Дегтярев ЕвгенийMolochnikЭто фактически означает сдублировать работу с бд в памяти одного потока. Можно конечно, но скорости это не прибавит как уже выяснилось. оставим тему про дублирование, я понял что для вас значит усложнение... вернемся к скорости в вашем случае выбрать одну запись или 10 по времени одинаково, потому выхлоп будет но сначала оптимизируйте запрос/структуру (которых мы так и не увидели) в мсскл у вас та же проблема - 0.5 сек для выборки 1 записи из очереди много Да, решил разобраться с самим запросом. Отключая разные куски запроса оказалось что проблема в скорости связана с ORDER BY: Код: sql 1.
tbl1.Priority у всех записей одинаковый, в tbl1 запись одна tbl2.Priority у всех записей одинаковый, и их в tbl2 50 тыс штук При объединении таблиц получаются 50 тыс записей у которых tbl1.Priority=0 и tbl2.Priority=0 и по этим полям идет сортировка, которая напрягает оба серверы, но FB особенно. Правда как дальше быть не знаю, поскольку сортировка по приоритету должна быть, он все таки может быть разным. Индексы на оба поля делал но толку нет, значения то одинаковые. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 15:59 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik, я же тебе сразу сказал, что твои * играют злую шутку, потому что план там SORT ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:16 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
... а статистику выполнения реального запроса и gstat -h базы мы, похоже, что так и не дождёмся ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 16:21 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
MolochnikПри объединении таблиц получаются 50 тыс записей у которых tbl1.Priority=0 и tbl2.Priority=0 и по этим полям идет сортировка, которая напрягает оба серверы, но FB особенно. Правда как дальше быть не знаю, поскольку сортировка по приоритету должна быть, он все таки может быть разным. Индексы на оба поля делал но толку нет, значения то одинаковые. и все эти 50т требуют обработки? если нет, то сначала отобрать те которые требуют - после и сортировать до посинения и еще вопрос почему задачи не сортируются по одной таблице? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 18:02 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
o_v_a... а статистику выполнения реального запроса и gstat -h базы мы, похоже, что так и не дождёмся просто не знал как это делается. Понял сделаю. Дегтярев Евгенийи все эти 50т требуют обработки? если нет, то сначала отобрать те которые требуют - после и сортировать до посинения да нужно именно все записи обработать, может сложиться ситуация когда 49999 записей имеют приоритет 0, а последняя 1, нужно чтобы сначала была обработана последняя запись. Наверное можно сначала выбрать всевозможные приоритеты первой таблицы, затем всевозможные приоритеты второй, потом организовать вложенные циклы c запросом в котором уже не будет ORDER BY по приоритетам. Неужели так и надо делать? Выглядит ужасно криво. Дегтярев Евгенийи еще вопрос почему задачи не сортируются по одной таблице? Не совсем понял вопрос, имеется ввиду почему "сортировка по полям разных таблиц а не по одной"? Две разные сущности и каждая имеет приоритет. Симонов ДенисMolochnik, я же тебе сразу сказал, что твои * играют злую шутку, потому что план там SORT Я просто не мог предположить что поле с постоянным значением оказывает такое тяжелое воздействие. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 18:34 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik, авторда нужно именно все записи обработать, может сложиться ситуация когда 49999 записей имеют приоритет 0, а последняя 1, нужно чтобы сначала была обработана последняя запись это решается соответствующим индексом, но для этого данные должны быть в одной таблице ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 18:58 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik, топик, непонятно чего ты хочешь? на халяву получить производительность коммерческой дорогой СУБД? ....... ФБ - простая легковесная штука. отсюда ее плюсы и минусы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2019, 22:56 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Дегтярев ЕвгенийMolochnik, это решается соответствующим индексом, но для этого данные должны быть в одной таблице Может представление сделать? Будет фактически одна виртуальная таблица, но индекс же на ней не построишь, не вариант. Тогда может просто дублировать поля Priority в одну таблицу? И при любом изменении исходных (это случается крайне редко) просто обновлять результирующую по которой и идет запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 07:58 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
SiemarglMolochnik, топик, непонятно чего ты хочешь? на халяву получить производительность коммерческой дорогой СУБД? ....... ФБ - простая легковесная штука. отсюда ее плюсы и минусы. У меня претензий к нему нет, MS SQL тоже же медленно работает, а проблема оказалась в запросе который писал я сам. Если убрать поля приоритетов из сортировки, запрос выполняется обоими серверами мгновенно (5-10 мс) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 08:01 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik Код: sql 1.
....а вот в планировщике процессов в windows ввели такое понятие как dynamic priority boost, иначе на сильно загруженной системе некоторые процессы вообще переставали выполнятьcя, могли часами висеть в состоянии "жду своего шанса" ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 15:40 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
MolochnikSiemarglMolochnik, топик, непонятно чего ты хочешь? на халяву получить производительность коммерческой дорогой СУБД? ....... ФБ - простая легковесная штука. отсюда ее плюсы и минусы. У меня претензий к нему нет, MS SQL тоже же медленно работает, а проблема оказалась в запросе который писал я сам. Если убрать поля приоритетов из сортировки, запрос выполняется обоими серверами мгновенно (5-10 мс) Во-первых, чем какое-то штуко универсальнее, тем оно хуже в каждом конкретном применении, это аксиома. Это насчёт проектирования единого приложения под любую СУБД. Во вторых, убрать это поле из сортировки как два пальца об асфальт, и не надо городить никаких процедур-вьюх. Делаем в приложении примерно так. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Если приоритетных действительно заметно меньше, есть смысл сотворить индекс по Priority и добиться его использования в QPriority , вплоть до создания композита Priority,ID. И обеспечить его неиспользование в QCommon через +0. Это, правда, может повлечь за собой аналогичную подрихтовку других запросов с условием на Priority. Касательно в два запроса выглядит криво. Таки нам шашечки или ехать? Ходы кривые роет подземный умный крот, нормальные герои всегда идут в обход проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 17:00 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаЕсли приоритетных действительно заметно меньше, есть смысл сотворить индекс по Priority и добиться его использования в QPriority , вплоть до создания композита Priority,ID. И обеспечить его неиспользование в QCommon через +0. Это, правда, может повлечь за собой аналогичную подрихтовку других запросов с условием на Priority. Касательно в два запроса выглядит криво. Таки нам шашечки или ехать? Ходы кривые роет подземный умный крот, нормальные герои всегда идут в обход проблем. Выглядит круто, но мне непонятно без примера. Это обработка одного потока, желающего получить одну запись? Тогда почему Priority=1? Потоку же нужен не конкретный приоритет а просто самый высокий. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 21:24 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
На текущий момент сделал в основной таблице поле Priority в дополнение к полю NextDateTimeText. Значение в него пишется синтетическое, вычисляемое на основе tbl1.Priority и tbl2.Priority и всегда обновляемое при изменении либо tbl1 либо tbl2. Сделал индекс на основе Priority, NextDateTimeText. Сейчас первая запись, если подходит, ищется около 10 мс на FB. Если дополнительный фильтр по времени запрещает все записи, т.е. худший случай, когда шерстятся все 50 тыс. записей и ничего не находится, запрос длится около 1 сек. Т.е. даже в худшем случае запрос открывается существенно быстрее чем раньше в лучшем случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 21:38 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik, Т.е. все-таки можешь, когда захочешь?)) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 21:47 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Vlad FMolochnik, Т.е. все-таки можешь, когда захочешь?)) Так криво же! Лишнее поле, лишние запросы. :) Тут вопрос как дальше оптимизировать чтобы убрать эту 1 секунду на поиск несуществующей записи, видимо циклов с вложенным запросами не избежать. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 22:09 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik, не обязательно. 1. Можно кое что покумекать с CTE для отделения фильтрации и получения первой записи от присоединения дополнительных данных 2. Условия фильтрации можно упростить, да и вообще всякие LIKE нормально не оптмизируются ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2019, 22:34 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Симонов ДенисMolochnik, 1. Можно кое что покумекать с CTE для отделения фильтрации и получения первой записи от присоединения дополнительных данных Думаете, возможно оптимизировать? Вот я попроще оформил эту проблему: Table1 Id | TaskId | Info| -------------------- 1 | 1 | ' ' | 2 | 1 | ' ' | 3 | 1 | ' ' | 4 | 1 | ' ' | ...| ...| ...| Table2 TaskId | Condition | -------------------- 1 | 0 | Код: sql 1. 2.
Симонов ДенисMolochnik, 1. Условия фильтрации можно упростить, да и вообще всякие LIKE нормально не оптмизируются Я уже немного поправил часть с LIKE: Код: sql 1.
заменил Код: sql 1.
иначе без CAST ошибка при непустом :AllowedTexts вылезала. Вообще этот параметр используется очень редко, поэтому LIKE там обычно не срабатывает (т.е. условие всегда True). А вот условие по времени и дате срабатывает часто. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2019, 00:17 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
MolochnikЭто обработка одного потока, желающего получить одну запись? Будем считать, что я неправильно понял, что извлечение данных из базы и отметка того, что запись принята к рассмотрнию, сведены в критической секции, а потоки растекаются мыслью по древу с полученными из неё, секции, данными, каждый со своей возвращаемой этой секцией строкой резалтсета. На что наводит такая штучка как ROWS 1 в тексте запроса. Кстати, такой синтаксис мне незнаком, но я подумал, что либо я не в курсе последних веяний, либо автор привёл запрос MS SQL. MolochnikТогда почему Priority=1? Потоку же нужен не конкретный приоритет а просто самый высокий. Это я тоже неправильно понял из Molochniktbl1.Priority у всех записей одинаковый, в tbl1 запись одна tbl2.Priority у всех записей одинаковый, и их в tbl2 50 тыс штук что 1 - приоритетные строки, 0 - нет. Если есть иерархия приоритетов и основная масса всё-таки с нулевым, отсекаем её в первом запросе по where priority>0 и сортировку оставляем, на небольшом количестве записей она мешать не будет. Во втором уже ни условия на priority, ни сортировки по нему нет - ненулевые поймает первый, до второго дело дойдёт только если он пустой. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2019, 02:29 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Старый плюшевый мишка Будем считать, что я неправильно понял, что извлечение данных из базы и отметка того, что запись принята к рассмотрнию, сведены в критической секции, а потоки растекаются мыслью по древу с полученными из неё, секции, данными, каждый со своей возвращаемой этой секцией строкой резалтсета. да, все так оно и есть Старый плюшевый мишкаНа что наводит такая штучка как ROWS 1 в тексте запроса. Кстати, такой синтаксис мне незнаком, но я подумал, что либо я не в курсе последних веяний, либо автор привёл запрос MS SQL. Все придумывают кто на что горазд: TOP, ROWS, FIRST. Стандарта видимо нет. Старый плюшевый мишкаЭто я тоже неправильно понял из что 1 - приоритетные строки, 0 - нет. Если есть иерархия приоритетов и основная масса всё-таки с нулевым, отсекаем её в первом запросе по where priority>0 и сортировку оставляем, на небольшом количестве записей она мешать не будет. Во втором уже ни условия на priority, ни сортировки по нему нет - ненулевые поймает первый, до второго дело дойдёт только если он пустой. Понял вашу логику. Приоритет меняется от 1 до 5 в двух используемых таблицах, думаю больше никому не потребуется, по умолчанию - 3. Обычно да, приоритет не меняют, но если все-таки поменяют, он сразу будет другим во многих записях. Т.е если сделать ускорение только для обычного приоритета, клиент будет недоумевать почему при обычном приоритете система работает быстро, а при критическом тормозит :) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2019, 08:22 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
MolochnikВсе придумывают кто на что горазд: TOP, ROWS, FIRST. Стандарта видимо нет. ROWS - стандарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2019, 09:11 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
WildSeryROWS - стандарт. Хорошо бы микрософту об этом сказать ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2019, 09:20 |
|
|
start [/forum/topic.php?fid=40&msg=39776522&tid=1560461]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
129ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 253ms |
0 / 0 |