Connection Pool trong java – Kết nối cơ sở dữ liệu – Phần 1

Khi làm việc với cơ sở dữ liệu hay nói cách khác là kết nối cơ sở dữ liệu cho những hệ thống tương đối lớn ở các công ty, thì vấn đề rất quan trọng đó là đảm bảo yêu cầu hiệu quả cao. Một ứng dụng có tính chuyên nghiệp cũng như để đảm bảo rằng một website có tốc độ xử lý nhanh thì một trong những vấn đề cần thiết nhất đó là phải xử lý để tối ưu số kết nối tới cơ sở dữ liệu.Bài này xin mạo muội nói đến vấn đề Connection Pool trong java – Kết nối cơ sở dữ liệu.

Vấn đề?

Thông thường, khi xây dựng một ứng dụng web với java,cứ một request đến thì chúng ta cần phải mở và đóng một kết nối.

public Connection getConnectMySQL(){
    	 try {
			Class.forName("com.mysql.jdbc.Driver");
			conn=DriverManager.getConnection(url,user,password);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	 
    	 return conn;
     }
public ArrayList<Category> getList(){
    	ArrayList<Category> listCat=new ArrayList<>();
    	conn=libConnect.getConnectMySQL();
    	String sql="SELECT * FROM news";
    	try {
			st=conn.createStatement();
			rs=st.executeQuery(sql);
			while(rs.next()){
				Category objCat=new Category(rs.getInt("id_cat"),rs.getString("name"));
				listCat.add(objCat);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally{
			try {
				rs.close();
				st.close();
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

Với cách làm trên, thì website nhỏ vừa chúng ta hoàn toàn làm như vậy được.Nhưng với một dự án lớn thì việc khi có một request đến thì quá trình mở và đóng kết nối thì việc làm như vậy quá thủ công, điều quan trọng hơn nữa đó là cứ mỗi lần open và close connection mất tầm từ 2-3s.Qua đó bạn đọc có thể thấy được rằng, nếu website của chúng ta có lượng truy cập người dùng cao thì chắc chắn rằng hiệu năng hoạt động của ứng dụng web không tốt.

Cách giải quyết?

Như vấn đề tôi đã đề cập đến ở trên, để giải quyết được vấn đề trên.Kỹ thuật connection pooling để quản lý và chia sẻ số kết nối.

Để rõ ràng bài này tôi chỉ đề cập đến Connection Pool là gì và lợi ích khi sử dụng Connection Pool.Phần 2, tôi sẽ hướng dẫn các bạn cách để tạo và sử dụng Connection Pool.

1.Connection Pool là gì?

Connection Pool trong java - Kết nối cơ sở dữ liệu

Connection pooling (tạm dịch là vùng kết nối) : là kỹ thuật cho phép tạo và duy trì 1 tập các kết nối dùng chung nhằm tăng hiệu suất cho các ứng dụng web bằng cách sử dụng lại các kết nối khi có yêu cầu thay vì việc tạo kết nối mới.

2.Cách làm việc của Connection pooling?

CPM (Connection pool Manager) là trình quản lý vùng kết nối, một khi ứng dụng được chạy thì Connection pool tạo ra một vùng kết nối, trong vùng kết nối đó có các kết nối do chúng ta tạo ra sẵn.Và như vậy, một khi có một request đến thì CPM kiểm tra xem có kết nối nào đang rỗi không? Nếu có nó sẽ dùng kết nối đó  còn không thì nó sẽ đợi cho đến khi có kết nối nào đó rỗi hoặc kết  nối khác bị timeout.

Qua một số chia sẻ trên của tôi về connection pool trong java, hy vọng các bạn có cái nhìn tổng quan về kết nối cơ sở dữ liệu.Tóm lại nếu là một ứng dụng lớn  và có tính chuyên nghiệp chúng ta nên sử dụng CP.Còn lại nếu dự án vừa và nhỏ thì không nên.

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
x