Mysql
 sql >> база данни >  >> RDS >> Mysql

Perl Connection Pooling

Нямам опит с DBIx::Connection, но използвам DBIx::Connector (по същество това, което DBIx::Class използва вътрешно, но вградено) и е прекрасно...

Обединявам тези връзки с обвивка на обект Moose, която изпраща обратно съществуващи екземпляри на обект, ако параметрите на връзката са идентични (това би работило по същия начин за всеки основен DB обект):

package MyApp::Factory::DatabaseConnection;
use strict;
use warnings;

use Moose;

# table of database name -> connection objects
has connection_pool => (
    is => 'ro', isa => 'HashRef[DBIx::Connector]',
    traits  => ['Hash'],
    handles => {
        has_pooled_connection => 'exists',
        get_pooled_connection => 'get',
        save_pooled_connection => 'set',
    },
    default => sub { {} },
);

sub get_connection
{
    my ($self, %options) = @_;

    # some application-specific parsing of %options here...

    my $obj;
    if ($options{reuse})
    {
        # extract the last-allocated connection for this database and pass it
        # back, if there is one.
        $obj = $self->get_pooled_connection($options{database});
    }

    if (not $obj or not $obj->connected)
    {
        # look up connection info based on requested database name
        my ($dsn, $username, $password) = $self->get_connection_info($options{database});
        $obj = DBIx::Connector->new($dsn, $username, $password);

        return unless $obj;

        # Save this connection for later reuse, possibly replacing an earlier
        # saved connection (this latest one has the highest chance of being in
        # the same pid as a subsequent request).
        $self->save_pooled_connection($options{database}, $obj) unless $options{nosave};
    }

    return $obj;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Форматиране на PHP масив за SQL IN клауза

  2. Каква е разликата между mysql drop partition и truncate дял

  3. заявка за премахване на всички знаци след последната запетая в низа

  4. Каква е разликата между типовете низове VARCHAR(255) и TINYTEXT в MySQL?

  5. Условно сортиране в MySQL?