Когда следует «target» => «slave» используется в запросе?

Если посмотреть на код Drupal, я заметил, что иногда запрос выполняется с помощью array('target' => 'slave') в качестве параметров, и я не понимаю в в этом случае это должно быть сделано.

Я думал, что это было сделано, когда запрос выполнялся параллельно другим, но потом я подумал, что можно сказать почти для любого запроса, выполняемого Drupal, когда несколько пользователей просматривают страницы сайта.
В каких случаях следует использовать array('target' => 'slave')?

  // node_update_index()
  $result = db_query_range("SELECT n.nid FROM {node} n LEFT JOIN {search_dataset} d ON d.type = 'node' AND d.sid = n.nid WHERE d.sid IS NULL OR d.reindex <> 0 ORDER BY d.reindex ASC, n.nid ASC", 0, $limit, array(), array('target' => 'slave'));
// search_index()
$node = db_query('SELECT title, nid, vid FROM {node} WHERE nid = :nid', array(':nid' => $linknid), array('target' => 'slave'))->fetchObject();

Кроме того, глядя на основной код Drupal, иногда используется array('target' => 'slave'), а иногда нет?

6 голосов | спросил kiamlaluno 4 +04002012-10-04T08:52:36+04:00312012bEurope/MoscowThu, 04 Oct 2012 08:52:36 +0400 2012, 08:52:36

2 ответа


2

Запросы SELECT (read) могут перейти к подчиненному устройству, другие, такие как запросы UPDATE и DELETE (write), должны перейти в master, а затем передать их в подчиненную базу данных.

  

Также, глядя на основной код Drupal, иногда используется array('target' => 'slave'), а иногда нет?

Это, вероятно, только исторические /наследственные причины из-за того, как постепенно создается база кода Drupal. Потенциально любые запросы SELECT могут быть нацелены на рабочую базу данных.

ответил David Thomas 2 Jpm1000000pmWed, 02 Jan 2013 14:36:55 +040013 2013, 14:36:55
0

Я думаю, это зависит от вашей архитектуры базы данных. Если у вас есть 1 (более) выделенный сервер подчиненных баз данных (только для чтения), тогда имеет смысл отправлять ему «безопасные» запросы на чтение. Это освобождает ваш основной сервер базы данных для работы с записью и, надеюсь, дает вашему приложению лучшую производительность в целом.

Вы также можете быть заинтересованы в этом связанном сообщении о получении ядра drupal для отправки дополнительных запросов к ним Как получить основу для использования конфигурации master /slave MySQL?

ответил wiifm 4 +04002012-10-04T15:01:51+04:00312012bEurope/MoscowThu, 04 Oct 2012 15:01:51 +0400 2012, 15:01:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132