Неиспользуемые записи в базу данных

Эта проблема была поднята с использованием Laravel 5.0.

Настройка базы данных моего проекта состоит из 1 узла записи и нескольких реплик чтения (postgresql). Каждый раз, когда соединение инициируется для любого запроса, например:

php
<?php $user = \App\User::find(1); ?>

… установлено соединение с узлом записи. Это происходит даже тогда, когда не выполняются запросы на запись (включая set names 'utf8', так далее); соединение будет установлено, но все SELECT запросы корректно выполняются на репликах чтения.

Как я могу избежать этого подключения записи, если мне не нужно / использовать его для запросов только для чтения?

3

Решение

Есть два класса, поддерживающие соединения с БД: Illuminate/Database/DatabaseManager а также Illuminate/Database/Connectors/ConnectionFactory,

Когда какой-либо класс Laravel хочет использовать соединение с БД, он вызывает DatabaseManager::connection()которые в конечном итоге запрашивают фактическое соединение через ConnectionFactory::make(),

Ваша проблема лежит здесь, в основе make() Процесс создает и «чтение» и «запись» соединения одновременно. Таким образом, соединение «запись» всегда установлено. Это поведение ConnectionFactory,

Таким образом, лучший способ — открыть вопрос о Laravel, спросив команду разработчиков, хотят ли они улучшить установление соединения только тогда, когда оно действительно необходимо.

Отредактировано:

Я только что обнаружил, что вы уже открыли вопрос 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]