Uploaded image for project: 'Doctrine DBAL'
  1. Doctrine DBAL
  2. DBAL-507

[GH-313] Enhanced Master-Slave Connection


    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: None
    • Security Level: All
    • Labels:


      This issue is created automatically through a Github pull request on behalf of andrejhudec:

      Url: https://github.com/doctrine/dbal/pull/313


      Q A
      Bug fix? no
      New feature? yes
      BC breaks? no?
      Deprecations? no
      Tests pass? yes
      Fixed tickets -
      License MIT

      Current implementation of MasterSlaveConnection is very restrictive. The slave is picked up only when `executeQuery` is used. If appliacation uses `prepare` method in queries, every `SELECT` is done on master and this is bad for performance of master.

      This PR changes how and when it picks the slave or master:

      1. Slave if master was never picked before and ONLY if `getWrappedConnection`, `query`, `prepare`, or `executeQuery` is used and the query begins with `SELECT` (case insensitive) string.

      2. Master picked when `exec`, `executeUpdate`, `insert`, `delete`, `update`, `createSavepoint`, `releaseSavepoint`, `beginTransaction`, `rollback`, `commit` is called.

      3. Master picked when `query`, `prepare` or `executeQuery` is called and the query doesn't begin with `SELECT` (case insensitive) string.

      4. If master was picked once during the lifetime of the connection it will always get picked afterwards.

      5. One slave connection is randomly picked ONCE during a request.


        doctrinebot Doctrine Bot created issue -
        beberlei Benjamin Eberlei made changes -
        Field Original Value New Value
        Status Open [ 1 ] Resolved [ 5 ]
        Resolution Won't Fix [ 2 ]


          • Assignee:
            beberlei Benjamin Eberlei
            doctrinebot Doctrine Bot
          • Votes:
            0 Vote for this issue
            1 Start watching this issue


            • Created: