|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Дегтярев Евгенийсделайте отдельную узкую таблицу для очереди с необходимым и достаточным набором полей ....а если таски настолько разные, что полей надо мноооого и узко не получается, то вероятно можно сделать несколько разных таблиц-очередей едва ли критерии распределения тасков по разным типов воркеров менются часто ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 14:21 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
AriochСтарый плюшевый мишкаIBExpert внизу, вместе со временем выполнения, показывает пресловутый план там ещё статистика чтений показываетсЯ, сколько с диска и сколько с кэша в памяти особенно еслди сравнить один и тот же запрос по холодному и по горячему вполне возможно, что часть преимущества MS SQL просто в бОльшем кэше MSSQL "жует" _многостраничные_ _автогенерируемые_ запросы 1С, например. А вы тут к каждому индексу цепляетесь.... =) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 14:41 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
SiemarglAriochпропущено... там ещё статистика чтений показываетсЯ, сколько с диска и сколько с кэша в памяти особенно еслди сравнить один и тот же запрос по холодному и по горячему вполне возможно, что часть преимущества MS SQL просто в бОльшем кэше MSSQL "жует" _многостраничные_ _автогенерируемые_ запросы 1С, например. А вы тут к каждому индексу цепляетесь.... =) В некоторых случаях развертывание всего комплекса, и полгода работы занимают меньше времени, чем развертывание MSSQL со всеми нетями, апдетями и пр. фигней. Для по-настоящему больших задач все равно динозавры-оракулы. Наша ниша - маленькие теплокровные млекопитающие(ся). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 15:19 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
SiemarglMSSQL "жует" _многостраничные_ _автогенерируемые_ запросы 1С, например. А вы тут к каждому индексу цепляетесь.... =) К сожалению, там те же проблемы. Оптимизатор конкретной СУБД (MS SQL, DB2, PostgrSQL), используемой совместно с 1С, тоже строит планы по схожим принципам. Просто разработчики 1С более тщательно, чем Вы, подходят к вопросу генерации запросов. И все равно, иногда приходится работать ручками, об этом много написано, например: http://www.gilev.ru/optimquery/ http://www.gilev.ru/index/ Чудо-СУБД не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 16:22 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
AriochДегтярев Евгенийсделайте отдельную узкую таблицу для очереди с необходимым и достаточным набором полей ....а если таски настолько разные, что полей надо мноооого и узко не получается хрень если так, очень даже хрень на до даже в этом случае есть решение зы сорри за резкость, в сибири пятница празднуется во всю ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2019, 17:58 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Дегтярев ЕвгенийMolochnikСмысл этого простой - очередь. Каждый поток по очереди выбирает первую доступную запись для обработки и помечает ее как используемую. Если потоки будут читать одновременно они могут выбрать одну и туже запись. сделайте один поток, ответственный за распределение заданий из очереди Дегтярев ЕвгенийMolochnikПо мне текущая архитектура выглядит логично - каждый поток выбирает подходящую ему незанятую запись и обрабатывает ее столько сколь считает нужным. Ваш вариант с одним потоком обработчиком базы сильно усложняет систему потому, что НЕ ВСЕ записи подходят потоку и время обработки записи потоком неизвестно. - не вижу ничего логичного - не вижу усложнения - поделите записи на группы и отдавайте обработчику нужную - время обработки тут вообще причем?Дегтярев ЕвгенийMolochnikЭто фактически означает сдублировать работу с бд в памяти одного потока. Можно конечно, но скорости это не прибавит как уже выяснилось. оставим тему про дублирование, я понял что для вас значит усложнение... Опять вернулся к этой задаче и к вашему методу решения. Интересно что у меня примерно так раньше (лет 10 назад) так и работало, когда один поток лазил в базу и создавал очередь заданий в памяти (кэш), к которой уже обращались потоки обработчики, не лазящие в базу. Потом я бросил этот способ, поскольку: 1) кэш иногда переполнялся, если ни одному потоку не нужна была запись долгое время (а может и не вовсе не пригодилась бы), 2) приходилось отслеживать его актуальность, если таблица менялась сторонней программой, 3) иногда нужной записи не было в кэше и поток простаивал. Все это конечно решалось, но выглядело сложно и уродливо, и я бросил этот способ в пользу теперешней схемы. Если рассматривать вариант без кэша, когда данные берутся из таблицы только когда они реально нужны (онлайн), то в чем тогда преимущество одного потока перед несколькими потоками, работающими через критическую секцию? В оверхеде работы критической секции? Это разве не "ловля блох"? Хотя потоков может быть и штук двести. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2019, 00:18 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik3) иногда нужной записи не было в кэше и поток простаивал он так и так будет простаивать, только в вашем случае он будет постоянно долбить БД тяжелым запросом, который ничего не возвращает. MolochnikЕсли рассматривать вариант без кэша, когда данные берутся из таблицы только когда они реально нужны (онлайн), то в чем тогда преимущество одного потока перед несколькими потоками, работающими через критическую секцию? В оверхеде работы критической секции? Это разве не "ловля блох"? Хотя потоков может быть и штук двести. какая выгода, если если все будет упираться во время запроса к БД? я повторюсь, сложно судить не зная деталей зы почему топил за такой вариант один из примеров, есть задача - раздача экономических новостей клиентам по вебсокету данные в памяти, несколько фидов, в каждом по несколько тыс записей, в общей сложности около 50т одни поток раз в секунду читает из новые записи БД с банальным условием where id > lastId далее уже в сервисе решается к какому фиду относится новость, какому клиенту ее отправить (у каждого свои фильтры) данные в памяти позволяют обслуживать запросы чтение отдельных новостей или списков с пагинацией, с учетом фильтров и пр требований за микросекунды, для клиента время обработки запроса = времени пинга в моем случае это еще и легко масштабируется без масштабирования БД зызы мне кажется, что в вашем случае при удачной организации структуры таблиц и индексов можно решить задачу на уровне бд ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2019, 09:55 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Дегтярев Евгений, Жаль в форуме нет кнопки "проблема решена", а то можно было бы нажать. Все сделал как здесь вы и другие советовали: 1) В базу лазит только один поток (супервизор), он регулярно создает небольшую очередь (ThreadList) для чтения для каждого из типов потоков-обработчиков и еще одну - для записи в базу. Типов потоков-обработчиков обычно мало (как правило один). Кэш при любых изменениях базы из сторонней программы очищается. 2) Потоки обработчики работают: берут Item из одной очереди, обрабатывают его и кладут в другую. Поток-супервизор регулярно обновляет базу записывая все изменения в одной транзакции и очищая очередь записи. 3) Аккуратно сгладил все потенциальные затыки и сейчас уже при 10ти потоках этот механизм работает намного веселее а при 200х - вообще небо и земля 4) Также изначально с FB была проблема, что выборка по условию осуществлялась долго, если поле условия (приоритет) находится в отдельной таблице и везде одинаково (В MS SQL этой проблемы не было). Поэтому сделал дополнительное поле в основной таблице выборки, куда и дублирую значение приоритета. Все стало работать идеально: со скоростью сравнимой с MS SQL (всего раза в 2-3 медленннее, а не на 3 порядка на 50 тыс записей). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2019, 13:28 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
вот это поворот ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2019, 12:22 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
2Molochnik, Прочитал все пять страниц взахлеб. Свежо, интригующе. У меня только один вопрос. WTF? Я понимаю, что задача как минимум взломать пентагон, но все же можно доступным языком понять что именно за хрень за шедевр вы автоматизируете? Т.е. именно постановка задачи, а не ваша реализация. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.01.2020, 23:25 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Троглодиты среди нас. =8-[ ] ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2020, 00:23 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Troglodit, там реально было две проблемы. 1) Первая, медленно запрос делался. Сейчас есть свободное время, сделал тесты, урезал базу и запрос до минимума. Вот что получилось: Сама заполненная база - ссылка (ссылка неделю хранится) Медленный запрос: Код: sql 1. 2. 3. 4.
Быстрый запрос по "лишнему полю" Priority, которое оказалось совсем нелишним и с помощью которого я обошел проблему (здесь посоветовали): Код: sql 1. 2. 3. 4.
2) Вторая, много потоков, каждый из которых лазил в базу на чтение и на запись. Работало на небольшом числе потоков, но очень плохо масштабировалось. Если потоков становилось несколько десятков уже довольно сильно тормозило, а если их сотня система вообще становилась неработоспособной. Эту я решил сделав один поток работающим с базой, а остальные потоки работающими с очередями запросов. Вложенный файл таблицы стилей это я просто тесты с форумом проводил - не мог поверить что 150 кб это максимум (архив базы у меня 500 занимает). Причем удалить сылку уже нельзя как я понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2020, 04:26 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik Troglodit, там реально было две проблемы. 1) Первая, медленно запрос делался. Сейчас есть свободное время, сделал тесты, урезал базу и запрос до минимума. Вот что получилось: Сама заполненная база - ссылка (ссылка неделю хранится) Медленный запрос: Код: sql 1. 2. 3. 4.
Быстрый запрос по "лишнему полю" Priority, которое оказалось совсем нелишним и с помощью которого я обошел проблему (здесь посоветовали): Код: sql 1. 2. 3. 4.
2) Вторая, много потоков, каждый из которых лазил в базу на чтение и на запись. Работало на небольшом числе потоков, но очень плохо масштабировалось. Если потоков становилось несколько десятков уже довольно сильно тормозило, а если их сотня система вообще становилась неработоспособной. Эту я решил сделав один поток работающим с базой, а остальные потоки работающими с очередями запросов. Вложенный файл таблицы стилей это я просто тесты с форумом проводил - не мог поверить что 150 кб это максимум (архив базы у меня 500 занимает). Причем удалить сылку уже нельзя как я понял. Это все очень познавательно, но , внезапно, у меня опять 2 вопроса. 1. Зачем вам автор LEFT JOIN Contacts ON Contacts.ContactId=ActiveTaskContacts.ContactId во втором запросе, вы явно не используете contacts, пытаетесь запутать оптимизатор? 2. Что именно тормозит можете по человечески объяснить. 2.1 Это вашe приложение на delphi? может проще воспользоваться готовыми проверенными очередями, которые работают без проблем? По моей памяти с мультитредом в делфи все очень плохо. Вы давно слышали фразу "Гляди какой классный http-сервер, наверно он написан на Delphi"? 2.2 СУБД? крайне странно с учетом малого количества потоков. В мое время птица спокойно держала десятки коннектов в рабочем порядке на железе 15 летней давности. Думаю текущая версия еще лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2020, 00:23 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Troglodit Это все очень познавательно, но , внезапно, у меня опять 2 вопроса. 1. Зачем вам автор LEFT JOIN Contacts ON Contacts.ContactId=ActiveTaskContacts.ContactId 2. Что именно тормозит можете по человечески объяснить. 2.1 Это вашe приложение на delphi? может проще воспользоваться готовыми проверенными очередями, которые работают без проблем? По моей памяти с мультитредом в делфи все очень плохо. Вы давно слышали фразу "Гляди какой классный http-сервер, наверно он написан на Delphi"? 2.2 СУБД? крайне странно с учетом малого количества потоков. В мое время птица спокойно держала десятки коннектов в рабочем порядке на железе 15 летней давности. Думаю текущая версия еще лучше. Ответы 1. Почему не использую? Contacts не используется в тестовом примере, а вообще используется, причем много полей 2. Просто можете проверить выполнение запроса в IBExpert, первый ("медленный") выполняется на этой базе у меня около 200 мс, а второй ("быстрый") - мгновенно. Причем с увеличением числа записей скорость "меленного" падает в геметрической прогрессии. Причем: а) в запросе нет условий и берется всего одна запись (по логике первая попавшаяся) и запрос по идее не должен тормозить б) значение поля приоритета везде одинаковое, но индекс по нему в ActiveTaskContacts очень важен и без него "быстрый" запрос выполняется также медленно. Где то на форуме давно читал что в firebird/interbase по маломеняющемуся полю индексы смысла нет строить. Этот же пример говорит об обратном - индекс точно нужен даже для неменяющегося поля. в) в то же время индекс по полю приоритета в таблице Contacts не влияет на скорость г) в MS SQL скорость выполнения обоих запросов одинаково быстрая и независимая от наличия индексов (быстрее "быстрого" запроса в Firebird раза в три), т.е. именно так и должно быть по логике запроса (достань первую попавшуюся запись) 2.1 Здесь все нормально, в Дельфях сейчас все хорошо и с потоками и параллелелизмом, сам пользуюсь TThread, TThreadList и TParallel когда по смыслу надо. С TThreadedQueue у меня не заладилось, возможностей мало, проще здесь свое было сделать. Сейчас тестировал на ноутбуке 400 потоковую систему, тормозов нет вообще, все идеально работает. 2.2 сейчас использую FB 3.0. Коннекты держит, не падает, это точно, но даже визуально (у меня работа потоков визуализирована) видно что схема с одним потоком "базы" работает на порядок быстрее уже при 10 потоках-обработчиках. При схеме с одним потоком в базу много запросов выполняется в одной траназкции и это сильно ускоряет дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2020, 07:45 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik Где то на форуме давно читал что в firebird/interbase по маломеняющемуся полю индексы смысла нет строить. гм, что? Может, не по "маломеняющемуся", а по имеющему сильно мало разных значений относительно количества записей? И то тут ситуации разные бывают, в зависимости от распределения таких значений. Судя по вашим описаниям, вы просто "тыкаете палочкой в Firebird", хотя уже давно можно было разобраться, по статьям и видео. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2020, 12:46 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
если заменить left join на join, то медленный запрос становится быстрым ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2020, 12:50 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
vvvait, а если поставить SSD вместо HDD, то запрос становится еще быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2020, 13:06 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
kdv, Да, имел ввиду поле с малым разнообразием значений, в данном случае их максимальное количество 5 но обычно используется одно ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2020, 15:31 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnik Troglodit Это все очень познавательно, но , внезапно, у меня опять 2 вопроса. 1. Зачем вам пропущено... во втором запросе, вы явно не используете contacts, пытаетесь запутать оптимизатор? 2. Что именно тормозит можете по человечески объяснить. 2.1 Это вашe приложение на delphi? может проще воспользоваться готовыми проверенными очередями, которые работают без проблем? По моей памяти с мультитредом в делфи все очень плохо. Вы давно слышали фразу "Гляди какой классный http-сервер, наверно он написан на Delphi"? 2.2 СУБД? крайне странно с учетом малого количества потоков. В мое время птица спокойно держала десятки коннектов в рабочем порядке на железе 15 летней давности. Думаю текущая версия еще лучше. Ответы 1. Почему не использую? Contacts не используется в тестовом примере, а вообще используется, причем много полей 2. Просто можете проверить выполнение запроса в IBExpert, первый ("медленный") выполняется на этой базе у меня около 200 мс, а второй ("быстрый") - мгновенно. Причем с увеличением числа записей скорость "меленного" падает в геметрической прогрессии. Причем: а) в запросе нет условий и берется всего одна запись (по логике первая попавшаяся) и запрос по идее не должен тормозить б) значение поля приоритета везде одинаковое, но индекс по нему в ActiveTaskContacts очень важен и без него "быстрый" запрос выполняется также медленно. Где то на форуме давно читал что в firebird/interbase по маломеняющемуся полю индексы смысла нет строить. Этот же пример говорит об обратном - индекс точно нужен даже для неменяющегося поля. в) в то же время индекс по полю приоритета в таблице Contacts не влияет на скорость г) в MS SQL скорость выполнения обоих запросов одинаково быстрая и независимая от наличия индексов (быстрее "быстрого" запроса в Firebird раза в три), т.е. именно так и должно быть по логике запроса (достань первую попавшуюся запись) 2.1 Здесь все нормально, в Дельфях сейчас все хорошо и с потоками и параллелелизмом, сам пользуюсь TThread, TThreadList и TParallel когда по смыслу надо. С TThreadedQueue у меня не заладилось, возможностей мало, проще здесь свое было сделать. Сейчас тестировал на ноутбуке 400 потоковую систему, тормозов нет вообще, все идеально работает. 2.2 сейчас использую FB 3.0. Коннекты держит, не падает, это точно, но даже визуально (у меня работа потоков визуализирована) видно что схема с одним потоком "базы" работает на порядок быстрее уже при 10 потоках-обработчиках. При схеме с одним потоком в базу много запросов выполняется в одной траназкции и это сильно ускоряет дело. 1. Телепаты в отпуске. Тупая вводная->тупой комментарий. б) маломеняющееся поле, что это за зверь применимый к индексу. Индексу плохо только когда поле имеет мало уникальных значений. в) т.е. в сортировке он не участвует? г) настройки птицы и mssql одинаковые? 2.1 Вы уверены, что делфевая реализация потоков,сервисов не медленная по сравнению с традиционным стэком серверных ЯП? 2.2 А не следует ли скорость 1 поток базы ->10 потоков в ваших терминах,что вы не реализовали коннектпул, и все ваше богатство в скорости, что в каждом потоке вы создаете новый коннект к примеру? "При схеме с одним потоком в базу много запросов выполняется в одной траназкции" Это вообще за гранью моего понимания. Если вы перемешиваете запросы из разных потоков в 1-й транзакции-это феерический выстрел в ногу. Если вам нужна очередь используйте готовые вещи, что умные дядьки не чета нам сирым и убогим написали. И вы удивитесь скорости и надежности. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 16:09 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Molochnikно обычно используется одно если в столбце одно значение, то в индексе один ключ, и индекс такой тогда нахрен не нужен. Он будет жрать память при поиске, и добавлять тормоза при ресторе. Понятно, что поиск по одному значению - бессмыслица. Смыслица может быть только если по этому столбцу ищутся НЕСУЩЕСТВУЮЩИЕ значения. Например, там только 1 (или даже 0 и 1), а ищется 2 или 3. Тогда индекс будет ОЧЕНЬ полезен, моментально выдавая, что таких ключей нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2020, 20:35 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
kdv если в столбце одно значение, то в индексе один ключ, и индекс такой тогда нахрен не нужен. Он будет жрать память при поиске, и добавлять тормоза при ресторе. Понятно, что поиск по одному значению - бессмыслица. Смыслица может быть только если по этому столбцу ищутся НЕСУЩЕСТВУЮЩИЕ значения. Например, там только 1 (или даже 0 и 1), а ищется 2 или 3. Тогда индекс будет ОЧЕНЬ полезен, моментально выдавая, что таких ключей нет. Есть и менее очевидные выгоды от индекса по "слабоселективному" полю. Например, есть таблица в 100 полей, одно из которых F и есть "слабоселективное" поле. Нужно часто вычислять select F, count(*). Скан индекс по полю F будет работать быстрее чем скан всех данных таблицы. PS Да, какое-нибудь материализованное агрегатное вью или колоночное хранение выиграют у простого индекса по полю F, но мы же сравниваем варианты с наличием и отсутствием этого индекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2020, 13:44 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
msLex, смотря где. В Firebird или не будет или даст очень слабый прирост, если конечно там больше 1 уникального значения. Нету у нас only index scan ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2020, 14:03 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
Troglodit б) маломеняющееся поле, что это за зверь применимый к индексу. Индексу плохо только когда поле имеет мало уникальных значений. в) т.е. в сортировке он не участвует? г) настройки птицы и mssql одинаковые? 2.1 Вы уверены, что делфевая реализация потоков,сервисов не медленная по сравнению с традиционным стэком серверных ЯП? 2.2 А не следует ли скорость 1 поток базы ->10 потоков в ваших терминах,что вы не реализовали коннектпул, и все ваше богатство в скорости, что в каждом потоке вы создаете новый коннект к примеру? "При схеме с одним потоком в базу много запросов выполняется в одной траназкции" Это вообще за гранью моего понимания. Если вы перемешиваете запросы из разных потоков в 1-й транзакции-это феерический выстрел в ногу. Если вам нужна очередь используйте готовые вещи, что умные дядьки не чета нам сирым и убогим написали. И вы удивитесь скорости и надежности. б) Это поле (Priority) имеет не мало, а "одно" значение. Индексу может и плохо но запросу хорошо. в) Участвует, в запросе это видно невооруженным взглядом г) fb настройки оптимизированные, ms sql все по умолчанию 2.1 Исходные коды всех дельфийских реализаций присуствуют, там очень быстрый спуск на нижний уровень WinApi, чтото там новое делать это ловить блох 2.2 Да раньше каждый поток создавал полностью независимое соединение по которому соединялся с БД в начале своей работы и отключался в конце. А потоки работали все время работы программы. Так что можно конечно такую реализацию и пулом назвать просто "пулом постоянных соединений". В другом месте у меня переменное число потоков (обработка сетевых запросов) разного времени жизни, там как раз нормальный пул: коннекты по мере надобности создаются и живут своей жизнью. Изредка происходит очистка. Обрабатываеть в одной транзакции данные от разных потоков согласен в общем случае может и не совсем верно. Но в данном случае все хорошо - запросы же одни и же просто с разными параметрами. Если теоретически один запрос завалит всю транзакцию (реально это невозможно) ничего страшного, в следующий раз пройдет. "Умные дядьки" уже придумали вместо критических секций использовать TMonitor, который вроде как быстрее, я туда и не лезу, может и правда быстрее, надежность точно не ниже. Я уже говорил, сейчас все работает близко к идеалу и поэтому вопрос организации монгопоточности меня не так сильно волнует - на ноуте у меня 400 потоков работало почти не напрягая проц. kdv если в столбце одно значение, то в индексе один ключ, и индекс такой тогда нахрен не нужен. Он будет жрать память при поиске, и добавлять тормоза при ресторе. Понятно, что поиск по одному значению - бессмыслица. Смыслица может быть только если по этому столбцу ищутся НЕСУЩЕСТВУЮЩИЕ значения. Например, там только 1 (или даже 0 и 1), а ищется 2 или 3. Тогда индекс будет ОЧЕНЬ полезен, моментально выдавая, что таких ключей нет. Да, значение в поле только одно, по нему сортировка и индекс очень даже нужен оказывается. Так чего говорить то? база есть - скачать, зарегистрировать в айбиэксперте и выполнить указанные запросы, потом удалить индекс и опять выполнить. У меня часто бывает что клиент видит сразу то чего не вижу я, может и здесь так же ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2020, 15:29 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
msLexНужно часто вычислять select F, count(*). Скан индекс по полю F будет работать быстрее чем скан всех данных таблицы. в Firebird такого нет. Индекс содержит все значения всех версий записи (стольбца), но не содержит номеров транзакций, поэтому по индексу нельзя определить, можно конкретной транзакции видеть некий ключ, или нельзя. Определить это можно только читая версию записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2020, 18:43 |
|
Firebird vs MS SQL
|
|||
---|---|---|---|
#18+
MolochnikТак чего говорить то? база есть - скачать, зарегистрировать в айбиэксперте и выполнить указанные запросы, потом удалить индекс и опять выполнить если это предложение в мою сторону, то увы - я бесплатно не работаю. Да и вообще, мы оптимизируем системы комплексно, "от 70к руб и полутора месяцев". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2020, 18:46 |
|
|
start [/forum/topic.php?fid=40&msg=39913059&tid=1560461]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
128ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 269ms |
total: | 503ms |
0 / 0 |