Нужно ли использовать концепцию многопоточности при обновлении той же базы данных? - PullRequest
1 голос
/ 30 июля 2011

Я создал приложение для Windows (используя c # .net) для отладки конкурса в нашем отделе. при этом многие пользователи используют одну и ту же базу данных, чтобы выбрать список вопросов и обновить оценки только в своем соответствующем идентификаторе. требуется ли использовать концепцию потоков при обновлении своих меток в базе данных? any1, пожалуйста, помогите мне .. спасибо заранее ...

Ответы [ 4 ]

3 голосов
/ 30 июля 2011

Mutil-Threading или несколько потоков используются в сценариях, где вы хотите выполнить более одной задачи за один раз или выполнить несколько задач одновременно. Вы должны подумать о вашем сценарии и возможном использовании нескольких потоков в вашем сценарии. Если вы считаете, что есть какая-то задача, которую можно разделить на две отдельные задачи, и они могут выполняться параллельно, вы можете использовать многопоточность для повышения производительности. Точно так же, если вы думаете, что есть какая-то задача, которая тяжелая и занимает много времени, вы можете переместить эту задачу на Background Thread и использовать основной поток для параллельного выполнения какой-либо другой задачи. Все зависит от вашего сценария.

Теперь перейдем к вашему сценарию, если это приложение Windows Forms. Скорее всего, одновременно будет только один пользователь этого приложения, который будет взаимодействовать через пользовательский интерфейс. Если это предположение верно, я не думаю, что вам понадобится многопоточность. Если пользователь делает некоторые вводные данные тщательно для пользовательского интерфейса и нажимает кнопку «Сохранить» в конце, чтобы сохранить информацию в БД, вам не нужно многопоточность, для этого достаточно одного потока пользовательского интерфейса

0 голосов
/ 30 июля 2011

Вам необходимо использовать не-пользовательский интерфейс для любых взаимодействий с базой данных, в противном случае пользовательский интерфейс может перестать отвечать.Например, если вы выполняете длинный запрос из потока пользовательского интерфейса (или ваше соединение было прервано, или база данных интенсивно используется или что-то еще, что может пойти не так - будет работать неправильно), поток пользовательского интерфейса блокируется до получения полного ответа.

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

0 голосов
/ 30 июля 2011

Если вы обновите базу данных из разных потоков, она не будет повреждена.Это отличается от обычного C #, где вам нужно применять блокировки для защиты ваших объектов.От вас может потребоваться использовать транзакции, чтобы обновления базы данных не мешали друг другу на более высоком уровне.Проще говоря, транзакции гарантируют, что ваша база данных остается согласованной, если вы редактируете базу данных в нескольких таблицах или если изменения в вашей базе данных зависят от содержимого базы данных, например, при добавлении заказа от клиента, транзакции не позволяют добавить заказ для удаленного клиента..

0 голосов
/ 30 июля 2011

Нет, это не нужно. Каждый пользователь будет получать соединение из базы данных пул соединений , и они работают одновременно, и параллельное программирование не требуется.

...