Разделение на базы данных только для чтения / записи - PullRequest
2 голосов
/ 19 августа 2011

Многие люди говорили, что можно добиться более высокой производительности, создавая базы данных только для чтения и только для записи, честно говоря, я не могу полностью понять это. Некоторые люди говорили мне, что для записи потребуется много разных блокировок, что замедлит чтение ... но, насколько я понимаю, для многих операций чтения в системе не требуются блокировки, такие как согласованное чтение оракула, как блокировки влияют на чтение? Кроме того, если я хочу разделить базу данных, предлагает ли разделение чтения / записи большую ценность?
Можете ли вы дать подробное объяснение или какой-то внешний ресурс о том, почему разделение чтения / записи может обеспечить более высокую производительность, спасибо.

1 Ответ

7 голосов
/ 04 ноября 2011

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

При репликации «ведущий-ведомый» ведущий может обрабатывать как чтение, так и запись, в то время как подчиненные обрабатывают только чтение.Затем ведомое устройство реплицирует любые операторы записи, выполненные на главном сервере.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...