Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách truy cập MySQL từ nhiều luồng đồng thời

Là người bảo trì một ứng dụng C khá lớn thực hiện các cuộc gọi MySQL từ nhiều luồng, tôi có thể nói rằng tôi không gặp vấn đề gì với việc tạo một kết nối mới trong mỗi luồng. Một số lưu ý mà tôi đã gặp:

  • Chỉnh sửa:có vẻ như dấu đầu dòng này chỉ áp dụng cho các phiên bản <5.5; xem trang này để biết phiên bản thích hợp của bạn : Giống như bạn nói rằng bạn đang làm, hãy liên kết với libmysqlclient_r .
  • Gọi mysql_library_init() (một lần, từ main() ). Đọc tài liệu về cách sử dụng trong môi trường đa luồng để biết lý do tại sao nó lại cần thiết.
  • Tạo một MYSQL mới cấu trúc sử dụng mysql_init() trong mỗi chủ đề. Điều này có tác dụng phụ khi gọi mysql_thread_init() cho bạn. mysql_real_connect() như thường lệ bên trong mỗi luồng, với cấu trúc MYSQL dành riêng cho luồng của nó.
  • Nếu bạn đang tạo / hủy nhiều chuỗi, bạn sẽ muốn sử dụng mysql_thread_end() ở cuối mỗi chuỗi (và mysql_library_end() ở cuối main() ). Dù sao thì đó cũng là một phương pháp tốt.

Về cơ bản, không chia sẻ MYSQL cấu trúc hoặc bất kỳ thứ gì được tạo cụ thể cho cấu trúc đó (tức là MYSQL_STMT s) và nó sẽ hoạt động như bạn mong đợi.

Điều này có vẻ như ít công việc hơn so với việc tạo ra một nhóm kết nối đối với tôi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PDO và liên kết nhiều bộ giá trị trong quá trình chèn - gần đây

  2. câu hỏi dấu phân cách mysql

  3. Cú pháp BẢNG ALTER SQL - Được DBMS liệt kê

  4. Hướng dẫn thiết kế cơ sở dữ liệu cho câu hỏi trong MySQL

  5. Chuyển đổi bảng mysql từ latin1 sang utf8