Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Внешнии ключи и скорость / 25 сообщений из 39, страница 1 из 2
24.09.2020, 15:02
    #40002166
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
Привет всем.
Не первый раз встречаюсь что на прадакшн серверах не делают внешние ключи на таблицах для скорости работы.
Действительно ли это улучшает скорость работы?
Стоит ли так делать?
Где можно почитать статьи на эту тему?
...
Рейтинг: 0 / 0
24.09.2020, 15:07
    #40002169
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro,

Зависит от целей и задач. Неиндексированный внешний ключ застопорит систему в момент удаления записей из родительской таблицы. Отсутствие ключа - вынудит добавлять дополнительные проверки в коде.
...
Рейтинг: 0 / 0
24.09.2020, 15:16
    #40002176
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
env,

Цель ускорить запись в бд/таблицу.
Следует ли удалять для этого внешние ключи?
...
Рейтинг: 0 / 0
24.09.2020, 15:17
    #40002177
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
env
DrKro,

Зависит от целей и задач. Неиндексированный внешний ключ застопорит систему в момент удаления записей из родительской таблицы. Отсутствие ключа - вынудит добавлять дополнительные проверки в коде.


Написать ответ и не дать ответ ни на один вопрос это талант

Модератор: А вот вести диалог в такой манере не рекомендую. Вам тут никто ничем не обязан, а разведе срач на ровном месте - последуют оргвыводы.
...
Рейтинг: 0 / 0
24.09.2020, 15:30
    #40002183
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
Цель ускорить запись в бд/таблицу.
Следует ли удалять для этого внешние ключи?
А вы уже разобрались, что проблема только во внешних ключах?

Тут как-то был эпический срач спор на тему сабжа, поищите. Я сходу не нашел.
UPD: нашел
...
Рейтинг: 0 / 0
24.09.2020, 15:59
    #40002194
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
Гавриленко Сергей Алексеевич
DrKro
Цель ускорить запись в бд/таблицу.
Следует ли удалять для этого внешние ключи?
А вы уже разобрались, что проблема только во внешних ключах?

Спасибо за ссылку.
Вопрос чисто теоретической, самой проблемы у меня нет.
Это было наблюдение.. которое вызывает соответствующие вопросы
...
Рейтинг: 0 / 0
24.09.2020, 16:10
    #40002202
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
Цель ускорить запись в бд/таблицу.


Сферическую в вакууме?

Если идёт запись непрерывным потоком, а обработка данных может быть отложена, то имеет смысл завести отдельно таблиц(у|ы) для записи без индексов и ключей, и отдельно процедуру переноса записей в целевую таблицу.

DrKro
Написать ответ и не дать ответ ни на один вопрос это талант

На сферические вопросы в вакууме сложно ответить по-другому.
...
Рейтинг: 0 / 0
24.09.2020, 16:17
    #40002207
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
env
DrKro
Цель ускорить запись в бд/таблицу.

На сферические вопросы в вакууме сложно ответить по-другому.

Ну речь именно о внешних ключах, не о индексах, не о пользе внешних ключей, не пользе индексов, не об альтернативах решения каких-то конкретных проблем, а о роли производительности внешних ключей при записи данных

Какую они играют роль в производительности при записи.
...
Рейтинг: 0 / 0
24.09.2020, 16:18
    #40002209
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
Речь о конкретных знаниях по вопросу, а не поиске решения проблемы
...
Рейтинг: 0 / 0
24.09.2020, 16:35
    #40002217
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro,

Исходный вопрос был "Слышал странный стук в подвале, что на прадакшн серверах не делают внешние ключи на таблицах для скорости работы.
Действительно ли это улучшает скорость работы?
Стоит ли так делать? "

Без уточнения какой класс задач решает система, насколько в ней важна согласованность данных, какими объёмами данных оперирует, каким критериям (например, загружать 99,9% входящего потока от внешних устройств на скорости 100М записей в секунду с потерей не более одного сообщения на 1М и доступностью агрегированных данных по датчикам в течение 10 минут после поступления в систему) отвечает и т.п.

Т.е. сферический вопрос ни о чём. Для начала имеет смысл почитать для чего вообще нужны внешние ключи, какую роль они выполняют в бд, а уже исходя из этого подумать, на какие действия с данными и как это повлияет.

Единого правильного ответа на исходный вопрос - нет. Всё зависит от контекста.
...
Рейтинг: 0 / 0
24.09.2020, 16:37
    #40002218
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
Ну речь именно о внешних ключах, не о индексах


Видите ли, сударь, эти конструкции в бд очень даже тесно связаны. Особенно для операций, которые затрагивают ссылочную целостность.
...
Рейтинг: 0 / 0
24.09.2020, 16:38
    #40002219
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
env
DrKro,
Единого правильного ответа на исходный вопрос - нет. Всё зависит от контекста.


При каком контексте имеет смыл не делать внешних ключей
...
Рейтинг: 0 / 0
24.09.2020, 16:46
    #40002224
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
env
DrKro,
Единого правильного ответа на исходный вопрос - нет. Всё зависит от контекста.


При каком контексте имеет смыл не делать внешних ключей

и чтобы от этого была польза
...
Рейтинг: 0 / 0
24.09.2020, 16:52
    #40002230
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
DrKro
пропущено...


При каком контексте имеет смыл не делать внешних ключей

и чтобы от этого была польза

А их наличие приносило вред
...
Рейтинг: 0 / 0
24.09.2020, 16:55
    #40002234
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
При каком контексте имеет смыл не делать внешних ключей


Если система ориентирована на скорость поступления данных, и для этого можно пожертвовать их связностью.

Или если целостность гарантирована иным способом или не требуется "в моменте". Например, слой итоговых витрин данных в хранилище, где запись в измерение может попасть позже записи в фактах, но к моменту обсчёта многомерной модели данные будут согласованы.
...
Рейтинг: 0 / 0
24.09.2020, 16:59
    #40002240
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
А их наличие приносило вред


Обычно вред приносит не их наличие, а непонимание, для чего они нужны и какие механизмы отрабатывают ссылочную целостность. Пример с удалением, блокирующем работу всей системы, уже приводил. проблема в этом случае не в наличии FK, а в отсутствии индекса по входящим в него полям (упд. обслуживание которого тоже чего-то да стоит).
...
Рейтинг: 0 / 0
24.09.2020, 17:00
    #40002241
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
env
DrKro
При каком контексте имеет смыл не делать внешних ключей


Если система ориентирована на скорость поступления данных, и для этого можно пожертвовать их связностью.

Или если целостность гарантированна иным способом или не требуется "в моменте". Например, слой итоговых витрин данных в хранилище, где запись в измерение может попасть позже записи в фактах, но к моменту обсчёта многомерной модели данные будут согласованы.


Супер) Спасибо, на два первые вопроса есть ответ

1)Действительно ли это улучшает скорость работы? - Да
2)Стоит ли так делать? - Когда это требуется, Да.
3)Где можно почитать статьи на эту тему? - погуглю.. но если есть известные статьи я не откажусь, да и никто не откажется
...
Рейтинг: 0 / 0
24.09.2020, 17:02
    #40002243
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
1)Действительно ли это улучшает скорость работы? - Да

Нет. Т.к. получаются несогласованные данные, кривые результаты и потеря денег бизнесом, приводящая к длительным затратам на поиск причин и тормозящая работу всей системы. Контекст и ещё раз контекст.
...
Рейтинг: 0 / 0
24.09.2020, 17:04
    #40002246
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
env
DrKro
1)Действительно ли это улучшает скорость работы? - Да

Нет. Т.к. получаются несогласованные данные, кривые результаты и потеря денег бизнесом, приводящая к длительным затратам на поиск причин и тормозящая работу всей системы. Контекст и ещё раз контекст.


Дальше я совсем не специалист, но выскажу предположение: в монге ведь нет внешних ключей и как то живут с этим..
...
Рейтинг: 0 / 0
24.09.2020, 17:05
    #40002247
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro,

И используют ровно под те же задачи, что и sql server?
...
Рейтинг: 0 / 0
24.09.2020, 17:11
    #40002250
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro,

Ну вот вам пример на вскидку:

Вы работаете на складе, у Вас есть некая полка где вы складируете материалы а также есть специальная тетрадка где есть список продукции хранимой на складе.

время от времени к вам приносят детали
вот тут и начинаются различия в постановке задачи:
1) ваша задача стоит в том что вы должны принять материал на склад но перед этим сверится с тетрадкой, а возможно ли хранение такого материала на складе?
2) вы просто тупо должны принять материал на склад

В первом варианте конечно Ваша производительность труда будет снижена, потому что сначала вы должны сверится с тетрадью и найти наименование материала который вам принесли и понять можете ли вы его принять, но вы четко будете следовать должностной
инструкции и поставленной перед Вами задачи и не будете садится на измену что завтра к вам заявится УБОП в целью взять Вас за яйца привлечения к уголовной отвественности

Во втором варианте вы работаете с максимальной отдачей и скоросью принимая любой товар как заправский ломбард. Но визит вышеописанной конторы никто не отменял.

Оба варианта имеют место быть но как видити все зависит от первоначальной задачи и степени осознания рисков
...
Рейтинг: 0 / 0
24.09.2020, 17:22
    #40002260
DrKro
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
env,

не ровно, конечно.
...
Рейтинг: 0 / 0
25.09.2020, 07:56
    #40002401
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
Цель ускорить запись в бд/таблицу.
Следует ли удалять для этого внешние ключи?
Разумеется, без внешних ключей запись будет быстрее. Неужели у вас были сомнения?

DrKro
Стоит ли так делать?
Как правило нет, по возможности.
...
Рейтинг: 0 / 0
25.09.2020, 09:40
    #40002423
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
alexeyvg
Разумеется, без внешних ключей запись будет быстрее

with nocheck .. nocheck
...
Рейтинг: 0 / 0
25.09.2020, 14:11
    #40002537
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внешнии ключи и скорость
DrKro
в монге ведь нет внешних ключей и как то живут с этим..

А в болидах F1 нет бамперов, подушек безопасности, автоматической коробки передач и туевой хучи всего, что обычно ставят на какой-нибудь грузовик. Надо правильно выбирать инструмент под задачу.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Внешнии ключи и скорость / 25 сообщений из 39, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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