troubleshooting Question

DB Connection pool

Avatar of basil365
basil365Flag for Ireland asked on
Databases.NET Programming
1 Comment1 Solution962 ViewsLast Modified:
Hi,

I created a db pool class to use in various applications. Can people tell me ways of getting the best performance/use from it?


public class MySqlConnectionPool
    {

        private string dbUrl;
        private string database;
        private string username;
        private string password;
        private int initPoolSize;

        private string connectionString;

        private ConcurrentBag<MySqlConnection> availableConnections = new ConcurrentBag<MySqlConnection>();

        /// <summary>
        /// Constructor for a mysql connection pool
        /// </summary>
        /// <param name="dbUrl">Url of the db that we wish to connect to</param>
        /// <param name="username">Username that we will use to connect</param>
        /// <param name="password">Password that we will use to connect</param>
        /// <param name="initPoolSize">Size of the pool initially</param>
        public MySqlConnectionPool(string dbUrl,string database, string username, string password,
            int initPoolSize)
        {
            this.dbUrl = dbUrl;
            this.database = database;
            this.username = username;
            this.password = password;
            this.initPoolSize = initPoolSize;

            connectionString = "SERVER = "+this.dbUrl+";DATABASE="+this.database+
                ";UID="+this.username+";PASSWORD="+this.password+";Connection Timeout = 5;";

            for (int i = 0; i < initPoolSize; i++)
            {
                MySqlConnection con = new MySqlConnection(this.connectionString);
                availableConnections.Add(con);
            }
        }

        [MethodImpl(MethodImplOptions.Synchronized)]
        public MySqlConnection checkOut()
        {       
            MySqlConnection con = null;

            while (con == null)
            {
                bool checkedOut = this.availableConnections.TryTake(out con);
            }
            return con;
        }

        public void checkIn(MySqlConnection con)
        {
            if (con.State != ConnectionState.Closed)
                con.Close();

            this.availableConnections.Add(con);
        }


    }
Join the community to see this answer!
Join our exclusive community to see this answer & millions of others.
Unlock 1 Answer and 1 Comment.
Join the Community
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 1 Comment.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros