Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pula połączeń Perla

Nie mam żadnego doświadczenia z DBIx::Connection, ale używam DBIx::Connector (zasadniczo to, co DBIx::Class używa wewnętrznie, ale w linii) i jest cudowne...

Łączę te połączenia z opakowaniem obiektów Moose, które przekazuje istniejące instancje obiektów, jeśli parametry połączenia są identyczne (działałoby to tak samo dla każdego bazowego obiektu 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. Jak zmienić domyślny port MySQL/MariaDB w systemie Linux?

  2. Jak na wyłączność zablokować bazę mysql?

  3. Błąd MySQL Entity Framework — Nie można znaleźć określonego dostawcy sklepu w konfiguracji lub jest on nieprawidłowy

  4. Wartości Auto_increment w InnoDB?

  5. Czy można użyć SQL do sortowania według daty, ale umieścić daty puste na końcu zestawu wyników?