Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?

Tôi mới sử dụng cơ sở dữ liệu, đã thực hiện "bài tập về nhà" cơ bản của mình về phần lý thuyết và đặt ra về việc sử dụng máy chủ MySQL thông qua MySQL Workbench.

Tôi đã tạo bốn "kết nối" xuất hiện trên bảng điều khiển Homescreen Workbench và tôi cũng đã tạo một số bảng. Nhưng khi tôi đăng nhập qua bất kỳ kết nối nào (sử dụng tên người dùng và mật khẩu), tôi có thể thấy tất cả các bảng mà tôi đã tạo. Vì vậy, bất cứ ai có thể vui lòng cho tôi biết điểm nào đằng sau nhiều kết nối sau đó? Chính xác thì "kết nối" trong MySQL Workbench là gì?

Tôi đã thử googling nó, tìm kiếm nó trên stackoverflow và thậm chí giới thiệu hướng dẫn sử dụng của MySQL Workbench, nhưng không có câu trả lời.

Đã hỏi ngày 1 tháng 7 năm 2015 lúc 16:56Jul 1, 2015 at 16:56

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?

5

Mỗi kết nối MySQL chứa bộ định nghĩa riêng. Ví dụ: các kết nối có thể kết nối với các máy chủ MySQL khác nhau hoặc cùng một máy chủ MySQL với các tên người dùng khác nhau hoặc bật SSL cho một hoặc bạn có thể thiết lập kết nối với máy chủ MySQL từ xa bằng các tùy chọn SSH, v.v.

Đối với nhiều kết nối với cùng một máy chủ MySQL cục bộ, bạn có thể có một kết nối bằng cách sử dụng "Root" với một kết nối khác bằng cách sử dụng người dùng ít đặc quyền hơn. Tùy thuộc vào cách bạn thiết lập người dùng, họ có thể (hoặc không) cả hai đều có quyền xem và sử dụng cùng một cơ sở dữ liệu (thông tin).

Vì vậy, để tóm tắt, các kết nối chỉ cần kết nối với máy chủ MySQL. Nếu hai kết nối sử dụng cùng một thông tin chính xác thì kết quả sẽ giống hệt nhau. Tuy nhiên, đó không phải là một trường hợp sử dụng phổ biến.

Đã trả lời ngày 1 tháng 7 năm 2015 lúc 18:17Jul 1, 2015 at 18:17

Philip Olsonphilip OlsonPhilip Olson

4,4521 Huy hiệu vàng23 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge23 silver badges20 bronze badges

Trong bài đăng này, chúng tôi mô tả các kết nối MySQL, luồng người dùng và tỷ lệ. Chúng tôi hy vọng rằng sự hiểu biết ngày càng tăng về cách MySQL hoạt động sẽ giúp các nhà phát triển ứng dụng và quản trị viên hệ thống đưa ra lựa chọn và đánh đổi tốt. Chúng tôi mô tả cách các kết nối hoạt động trong một máy chủ cộng đồng đơn giản và chúng tôi không bao gồm các chủ đề liên quan như gộp chủ đề, nhóm tài nguyên hoặc ghép kênh kết nối trong bài đăng này.

Máy chủ MySQL (MySQLD) thực thi như một quy trình HĐH duy nhất, với nhiều luồng thực hiện các hoạt động đồng thời. MySQL không có triển khai luồng riêng, nhưng dựa vào việc triển khai luồng của HĐH cơ bản. Khi người dùng kết nối với cơ sở dữ liệu, luồng người dùng được tạo bên trong MySQLD và luồng người dùng này thực thi truy vấn người dùng, & nbsp; Gửi kết quả trở lại cho người dùng, cho đến khi người dùng ngắt kết nối.

Khi ngày càng nhiều người dùng kết nối với cơ sở dữ liệu, ngày càng có nhiều luồng người dùng thực hiện song song. Miễn là tất cả các luồng người dùng thực thi như thể họ ở một mình, chúng ta có thể nói rằng hệ thống (MySQL) có tỷ lệ tốt. Nhưng tại một số điểm, chúng tôi đạt đến giới hạn và thêm nhiều luồng người dùng sẽ không hữu ích hoặc hiệu quả.

Kết nối và ngắt kết nối

Kết nối tương ứng với các phiên trong thuật ngữ tiêu chuẩn SQL. Một máy khách kết nối với máy chủ MySQL và giữ kết nối cho đến khi nó ngắt kết nối. Hình 1 minh họa những gì xảy ra khi máy khách MySQL kết nối với máy chủ MySQL.

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?
Hình 1: Kết nối

Khách hàng. Máy khách MySQL là một công cụ dòng lệnh hoặc một ứng dụng nói chuyện với Máy chủ MySQL & NBSP; Trên giao thức máy khách MYSQL-máy chủ-máy chủ bằng thư viện LibMysqlClient hoặc một số trong nhiều đầu nối MySQL. Một máy khách đa luồng duy nhất có thể mở nhiều kết nối đến máy chủ, nhưng để đơn giản, chúng tôi nói rằng một ứng dụng khách mở một kết nối với máy chủ.

Yêu cầu kết nối. Máy khách MySQL gửi các yêu cầu kết nối đến máy chủ MySQL. Yêu cầu kết nối chỉ đơn giản là thông báo kết nối TCP-IP được gửi đến cổng 3306 trên máy chủ máy chủ.

Chủ đề máy thu. Các yêu cầu kết nối đến được xếp hàng và sau đó được xử lý bởi chủ đề máy thu từng cái một. Công việc duy nhất của luồng máy thu là tạo luồng người dùng, việc xử lý thêm được thực hiện bởi luồng người dùng.

Bộ đệm. Chủ đề máy thu sẽ tạo ra một luồng hệ điều hành mới hoặc sử dụng lại một luồng hệ điều hành miễn phí hiện có nếu được tìm thấy trong bộ đệm luồng. Bộ đệm chủ đề được sử dụng rất quan trọng đối với tốc độ kết nối khi các luồng hệ điều hành tốn kém để tạo. Ngày nay, việc tạo ra một luồng hệ điều hành tương đối rẻ và bộ đệm chủ đề có thể được coi là di sản. Giá trị mặc định của Thread_Cache_Size được tính là 8 + (Max_Connections / 100) và hiếm khi được thay đổi. Có thể có ý nghĩa khi thử tăng bộ đệm chỉ trong trường hợp số lượng kết nối dao động giữa có rất ít kết nối và có nhiều kết nối.

Chủ đề người dùng. Đó là luồng người dùng xử lý giao thức máy khách-máy chủ, ví dụ: Gửi lại gói bắt tay ban đầu. Chủ đề người dùng này sẽ phân bổ và khởi tạo THD tương ứng, và sau đó tiếp tục với việc đàm phán và xác thực khả năng. Trong quá trình này, thông tin đăng nhập của người dùng được lưu trữ trong bối cảnh bảo mật THD. Nếu mọi thứ diễn ra tốt đẹp trong giai đoạn kết nối, luồng người dùng sẽ nhập giai đoạn lệnh.

THD. Kết nối được biểu thị bằng cấu trúc dữ liệu được gọi là THD được tạo khi kết nối được thiết lập và xóa khi kết nối bị hủy. Luôn luôn có sự tương ứng một-một giữa kết nối người dùng và THD, tức là THD không được sử dụng lại trên các kết nối. Kích thước của THD là ~ 10k và định nghĩa của nó được tìm thấy trong sql_class.h. THD là một cấu trúc dữ liệu lớn được sử dụng để theo dõi các khía cạnh khác nhau của trạng thái thực thi. Bộ nhớ bắt nguồn từ THD sẽ phát triển đáng kể trong quá trình thực thi truy vấn, nhưng chính xác nó sẽ phát triển bao nhiêu sẽ phụ thuộc vào truy vấn. & NBSP; Đối với mục đích lập kế hoạch bộ nhớ, chúng tôi khuyên bạn nên lập kế hoạch cho ~ 10MB cho mỗi kết nối.

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?
Hình 2: Kết nối hoạt động

Hình 2 minh họa giai đoạn lệnh. Tại đây, máy khách gửi truy vấn đến máy chủ và nhận lại kết quả trong một vài vòng. Nói chung, một chuỗi các câu lệnh có thể được gửi kèm theo giao dịch bắt đầu và cam kết/rollback. Trong trường hợp này, cần phải theo dõi bối cảnh giao dịch. Trong chế độ tự động-cam kết, mỗi câu lệnh sẽ được thực thi dưới dạng giao dịch (mỗi câu lệnh tạo thành bối cảnh giao dịch đầy đủ). Ngoài ra, có bối cảnh phiên, tức là phiên có thể giữ các biến phiên, biến người dùng và NBSP; và bảng tạm thời. Do đó, miễn là bối cảnh có liên quan để thực hiện các truy vấn, tất cả các truy vấn trên kết nối phải sử dụng cùng một THD.

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?
Hình 3: Ngắt kết nối

Hình 3 minh họa những gì xảy ra khi máy khách MySQL ngắt kết nối với máy chủ MySQL. Khách hàng gửi A & NBSP; Lệnh COM_QUIT khiến máy chủ đóng ổ cắm. Một sự ngắt kết nối cũng có thể xảy ra khi một trong hai bên đóng đầu của ổ cắm. Khi ngắt kết nối, luồng người dùng sẽ dọn dẹp, hãy phân bổ THD và cuối cùng tự đặt vào bộ đệm của luồng như là lơ lửng nếu có các khe miễn phí. Nếu không có khe cắm miễn phí, luồng người dùng sẽ bị chấm dứt.

Kết nối ngắn ngủi

Một kết nối ngắn ngủi là một kết nối chỉ mở trong một khoảng thời gian ngắn. Đây thường là trường hợp cho các ứng dụng PHP, máy khách mở kết nối, thực hiện một truy vấn đơn giản và sau đó đóng kết nối. Do kiến ​​trúc của nó, MySQL thực sự rất giỏi trong việc chấp nhận các kết nối mới ở tốc độ cao, lên tới 80.000 kết nối/ngắt kết nối mỗi giây như trong Hình 4 bên dưới.

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?
Hình 4: Kết nối+Truy vấn+Ngắt kết nối mỗi giây

Hình 4 minh họa hiệu suất kết nối/ngắt kết nối MySQL. Máy kiểm tra có Intel (R) Xeon (R) E5-2699 V4 CPU, 2CPU-SOCKETS, 22 lõi-HT mỗi ổ cắm, 2,20GHz (Broadwell). Chúng tôi đang chạy các máy khách Sysbench và máy chủ MySQL trên cùng một bộ lõi. Mỗi luồng Sysbench kết nối mặc dù ổ cắm, đưa ra một điểm chọn, ngắt kết nối và sau đó lặp lại. Dữ liệu là trong bộ nhớ. Biểu đồ hiển thị TPS cho số lượng khách hàng khác nhau, 20.000 cho 8 máy khách, 43.000 cho 16 máy khách, 73.000 cho 32 máy khách và 80.000 cho 64 máy khách.

MySQL luôn tương đối giỏi trong việc kết nối/ngắt kết nối, nhưng thực sự rất tốt với một số trợ giúp từ Facebook trong MySQL 5.6. Xem các bài đăng trên blog của Domas Mituzas và & NBSP; Yoshinori Matsunobu. Một số cải tiến bổ sung đã được thực hiện trong MySQL 5.7.

Kết nối lâu dài

Một kết nối sống lâu là một kết nối mở ra vô thời hạn. Ví dụ, người ta có thể có máy chủ web hoặc máy chủ ứng dụng & NBSP; Mở nhiều kết nối đến máy chủ MySQL và giữ cho chúng mở cho đến khi ứng dụng khách (máy chủ web/ứng dụng) bị dừng, có lẽ trong nhiều tháng.

Số lượng máy khách tối đa mà máy chủ cho phép kết nối đồng thời được xác định bởi biến hệ thống max_connections, có thể định cấu hình bởi người dùng. Khi đạt đến mức tối đa này, máy chủ sẽ không chấp nhận các kết nối mới cho đến khi một trong các máy khách đang hoạt động ngắt kết nối. Máy chủ MySQL sẽ có một luồng người dùng (với THD) cho thời gian sống của kết nối, như được minh họa trong Hình 5.

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?
Hình 5: Nhiều máy khách kết nối với một máy chủ MySQL duy nhất

Vì vậy, giá trị tốt nhất cho max_connections là gì? Câu trả lơi con phụ thuộc vao nhiêu thư". Nó sẽ chủ yếu phụ thuộc vào hai điều, tải máy khách và phần cứng MySQL đang chạy.

Một kết nối có thể ít nhiều bận rộn. Một kết nối rất bận rộn khi máy khách gửi các truy vấn quay lại đến máy chủ, nghĩa là mỗi lần khách hàng nhận lại kết quả, nó ngay lập tức gửi một truy vấn mới đến máy chủ. Một kết nối không bận nếu khách hàng bây giờ và sau đó gửi một truy vấn đến máy chủ và có những khoảng dừng dài giữa việc nhận kết quả từ một truy vấn cho đến khi truy vấn tiếp theo được gửi (khoảng thời gian nhàn rỗi). Trong một tình huống khi có nhiều kết nối và tất cả các kết nối đều rất bận rộn, chúng tôi nói rằng máy chủ MySQL đang bị tải nặng.

When connections are less busy one can accept more connections. Let us say a given server instance is maxing out on 5000 TPS for a user load over 200 connections. The same server will then be able to handle the same concurrency (5000 TPS) over 10000 connections, but adding more connections will not increase the concurrency. However, 10000 connections will require higher memory usage for (more) THDs and will result in less efficient use of hardware. One also needs to be aware that when setting max_connections to 10000 there is a risk of overloading the server if all connections send more and more queries exceeding the 5000 TPS overall capacity. In this case the server might start thrashing.

What is the maximum load? And how do I know that the server has reached maximum load? You have to test your workload, for example as follows: You can start with 2 busy clients and measure server TPS and Latency, and then continue step-wise by doubling the number of clients for each step. Initially, TPS will increase and latency will be constant for each step you take. At some point TPS will be the same as before and latency will start to increase, and this is the maximum load and the maximum number of (useful) clients.

What is the maximum user thread concurrency MySQL can handle?  Let us find a load which reaches thread concurrency limitations before it hits other limitations. A load that fits this requirement is Primary Key look-ups (Sysbench POINT SELECT) of data present in main memory (buffer pool). Since the primary key in MySQL/InnoDB is stored together with the data (clustered index) the only thing MySQL has to do for a point select is to navigate the in-memory B-tree, find the record, and return the result.

Since we want to illustrate thread concurrency we choose a machine with 48 CPU cores. The test machine has Intel(R) Xeon(R) Platinum 8168 CPU, 2CPU-sockets, 24 Cores-HT per socket, 2.70GHz (Skylake). We are running Sysbench clients and MySQL 8.0.15 server on the same set of cores.

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?
Figure 6: Sysbench POINT_SELECT (data fits into memory)

Figure 6 shows the relationship between number of connections (user threads) and the overall load in terms of Transactions per second (TPS). Each client generates POINT SELECT load back-to-back. Initially, the overall load grows close to linear with respect to the number of concurrent clients, for example 16 clients gives you 300 thousand TPS, 32 clients gives you 600 thousand TPS, 64 clients gives you 1.2 million TPS. The maximum is reached with 128 clients with 1.8 million TPS. With more than 128 clients the increase stops and then starts to decline. So, what is happening here?

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?
Figure 7: Sysbench POINT_SELECT (Latency)

Let’s take a look at query latency depicted in Figure 7 above. From 1 to 64 clients the query response time (latency) is constant around 50 microseconds. It then grows to 70 microseconds for 128 clients, 140 microseconds for 256 clients, and 300 microseconds for 512 clients.

MySQL reaches maximum efficiency for 128 user threads, with its max TPS (1.8 million) and low latency (70 microseconds).  Thus, at its peak, the user thread per core ratio is 128/48 = 2.7, and   from then on the efficiency goes down. Adding more user threads will cause latency to grow and it will depend upon application requirements what is acceptable latency, i.e. the defined service level agreement. In our example here, 95% of all transactions had latency less than 210 microseconds, which might be good enough for most applications. This gives us a user thread per core ratio is 256/48 = 5.3. Based on accumulated experience we recommend at maximum 4 times number of user threads as the number of real CPU cores, thus 4×48=196 user threads in our example.

MySQL did not always scale as well as shown above. MySQL 5.6 came with major RO scaleability improvements, but you had to use the READ-ONLY TRANSACTIONS feature and AUTO COMMIT to get the effect.  MySQL 5.7 came with auto-discovery of RO transactions and removed the contention around Meta Data Locking, THR_LOCK and the InnoDB trx_sys mutex and the lock_sys mutex. For those interested in the complete in-depth history, see Dimitri’s posts here, here, here, here, and here.

What happens if you hit some other bottleneck before you hit the thread concurrency bottleneck? One such example is illustrated in Figure 8 below. Figure 8 shows the same Sysbench POINT SELECT query as in Figure 6 above, but now the data volume is much higher and data must be read from disk most of the time. In this example we are using the fast Intel Optane SSDs but are still able to saturate the disk-to-memory bandwidth. I.e. the user threads in this example are waiting for disk pages to be brought in from the SSD to the InnoDB buffer pool. The overall result is a lower TPS (1 million as compared to 1.8 million) since each query will spend more time waiting for data. Adding more clients increases TPS until the disk capacity is saturated, at roughly 128-256 connections. At this point all user threads are just waiting for IO and adding more user threads will be counter productive.

Hướng dẫn what is a connection in mysql? - kết nối trong mysql là gì?
Hình 8: Sysbench point_select (IO ràng buộc)

Bài đăng của Dimitri ở đây thảo luận về các cải tiến 8.0 về khả năng mở rộng IO, loại bỏ sự tranh chấp xung quanh innodb fil_system mutex. Trong bối cảnh hiện tại, nó chỉ cho thấy rằng mặc dù sự tranh chấp ở đây là trên đĩa IO và TPS thấp hơn (1,1 triệu) Chủ đề, tối đa trên 256 luồng người dùng đạt 1,1 triệu qps.

Những gì giới hạn sự đồng thời chủ đề?

Một chủ đề sẽ vui vẻ thực hiện các hướng dẫn cho đến khi nó cần chờ một cái gì đó hoặc cho đến khi nó đã sử dụng thời gian của nó theo quyết định của bộ lập lịch hệ điều hành. Có ba điều mà một chủ đề có thể cần phải chờ: & nbsp; Một mutex, khóa cơ sở dữ liệu hoặc IO.

Mutex. Một mutex bảo vệ một cấu trúc dữ liệu nội bộ được chia sẻ, tức là khi người ta cần đảm bảo rằng chỉ có một luồng có thể thực thi bất cứ lúc nào. Nếu một luồng giữ một mutex, các luồng khác phải chờ xếp hàng cho đến khi đến lượt của chúng. Việc sử dụng của MuTexes là một kỹ thuật thực hiện và do đó, một cái gì đó có thể được các lập trình viên tung hứng miễn là duy trì tính chính xác của chương trình tổng thể. Các kỹ thuật bao gồm việc sử dụng các thuật toán không có khóa và để phân tách các tài nguyên được bảo vệ thành các tài nguyên hạt mịn hơn để đảm bảo rằng các luồng khác nhau yêu cầu các loại mutex khác nhau (giảm sự tranh chấp về tài nguyên toàn cầu). Phần lớn công việc mở rộng được thực hiện bởi các nhà phát triển MYSQL trong 5-10 năm qua đã tập trung vào việc sử dụng tốt hơn các loại mutexes.

Khóa. Khóa cơ sở dữ liệu theo một nghĩa nào đó giống như điều tương tự nhưng chúng được gắn với ngữ nghĩa cơ sở dữ liệu và do đó khó tránh hơn. (MySQL/Innodb khá giỏi trong việc tránh khóa do điều khiển đồng thời đa phiên bản của nó, MVCC). Khóa cơ sở dữ liệu có thể được chia thành các khóa dữ liệu (gây ra bởi SQL DML) và khóa dữ liệu meta (gây ra bởi SQL DDL). Một khóa dữ liệu như khóa hàng thường sẽ bảo vệ dữ liệu được cập nhật bởi một luồng khỏi được đọc hoặc viết bởi một luồng khác. Khóa dữ liệu meta thường sẽ bảo vệ lược đồ cơ sở dữ liệu khỏi các bản cập nhật đồng thời, không tương thích. Duy trì ngữ nghĩa cơ sở dữ liệu quan trọng hơn hiệu suất và quy mô, vì vậy việc loại bỏ khóa khó hơn là loại bỏ các loại mutexes. Kết quả là, các tắc nghẽn khả năng mở rộng do khóa thường phải được giải quyết ở cấp độ thiết kế ứng dụng OLTP, ví dụ: Một thiết kế lược đồ cơ sở dữ liệu tốt hơn kết hợp với các thiết kế truy vấn tốt hơn. MySQL 8.0 cũng cung cấp một số tính năng thú vị mới cho các nhà phát triển ứng dụng để tránh khóa, ví dụ: Không chờ và bỏ qua bị khóa.

Đĩa và mạng IO. IO là thứ mà người ta cố gắng giảm thiểu bất cứ khi nào có thể, và khi không thể cố gắng làm điều đó hiệu quả nhất có thể, ví dụ: Lấy trước, song song hóa, hàng loạt, vv Nhưng đến một lúc nào đó, hầu hết các chủ đề người dùng sẽ cần IO. Khi luồng người dùng cần đợi IO, HĐH thường sẽ đặt luồng ở trạng thái chờ và đưa CPU vào một luồng chờ khác. Điều này sẽ hoạt động tốt nếu chủ đề mới có khả năng đạt được tiến bộ và sẽ dẫn đến việc sử dụng CPU hiệu quả. Nhưng, ví dụ, nếu băng thông IO đã bị bão hòa, luồng mới cũng có khả năng cũng chỉ chờ IO và không có tiến triển nào có thể được thực hiện. Vì vậy, sự đồng thời của chủ đề sẽ bị giới hạn bởi công suất IO, như chúng ta đã thấy trong Hình 8.

Điều gì xảy ra khi một chủ đề bị đình chỉ bởi HĐH? Đầu tiên, nó không tiến triển nữa. Thứ hai, nó có thể giữ Mutexes hoặc khóa ngăn các luồng khác tiến triển. Thứ ba, khi nó được đánh thức một lần nữa, các vật phẩm được lưu trong bộ nhớ cache có thể đã bị trục xuất yêu cầu dữ liệu phải được đọc lại. Tại một số điểm, nhiều chủ đề sẽ chỉ khiến hàng đợi các luồng chờ phát triển và hệ thống sẽ sớm bị kẹt. Giải pháp là giới hạn số lượng luồng người dùng bằng cách giới hạn MAX_Connections, chỉ cho phép nhiều luồng người dùng đồng thời như hệ thống có thể xử lý hiệu quả.

Vai trò của các nhà phát triển ứng dụng

Trong một số trường hợp, các nhà phát triển ứng dụng đang kiểm soát kiến ​​trúc hệ thống tổng thể, lược đồ cơ sở dữ liệu và truy vấn cơ sở dữ liệu. Nhưng có lẽ thường xuyên hơn không, các nhà phát triển ứng dụng sẽ được yêu cầu phát triển một ứng dụng trên cơ sở dữ liệu hiện có. Trong cả hai trường hợp, nhà phát triển ứng dụng sẽ cần chú ý đến các truy vấn được gửi đến lớp cơ sở dữ liệu.

Trường hợp sử dụng cổ điển cho MySQL là xử lý giao dịch trực tuyến (OLTP) thường có yêu cầu thời gian đáp ứng. Thời gian phản hồi cơ sở dữ liệu có thể chấp nhận thường được chỉ định tính bằng mili giây và điều này tất nhiên sẽ giới hạn loại truy vấn có thể được dự kiến ​​sẽ chạy (có thể kết hợp với các hạn chế về khối lượng dữ liệu và cấu trúc của lược đồ cơ sở dữ liệu). Điều này thường trái ngược với & nbsp; Xử lý phân tích trực tuyến (OLAP) trong đó có các truy vấn phức tạp hơn, nhưng tần suất truy vấn thấp hơn và yêu cầu thời gian đáp ứng có thể được thư giãn hơn.

Đặc biệt đối với OLTP, nhà phát triển ứng dụng phải cẩn thận trong việc thiết kế các truy vấn có thể thực thi trong SLA thời gian phản hồi nhất định và có thể được thực hiện song song. & NBSP; Không khó để tạo ra một khối lượng công việc không quy mô, ví dụ như nhiều máy khách song song không làm gì khác ngoài việc cập nhật cùng một hàng trong cùng một bảng (xem các thiết kế thay thế ở đây).

Sự kết luận

  • MySQL rất giỏi trong việc xử lý nhiều máy khách kết nối và ngắt kết nối với cơ sở dữ liệu ở tần số cao, lên tới 80 nghìn kết nối và ngắt kết nối mỗi giây
  • MySQL tỷ lệ tốt trên CPU đa lõi và có thể cung cấp tới 2 triệu lần tra cứu chính mỗi giây trên 48 lõi CPU.
  • Quy tắc ngón tay cái: Số lượng kết nối tối đa = 4 lần lõi CPU có sẵn
  • Việc sử dụng hiệu quả các kết nối sẽ phụ thuộc vào tải người dùng, số lượng kết nối người dùng hữu ích thậm chí có thể thấp hơn số lượng lõi CPU khi nút cổ chai ở một nơi khác ngoài việc xâu chuỗi
  • Kiểm tra tải của riêng bạn bằng cách nhân đôi số lượng kết nối cho đến khi TPS không còn tăng và độ trễ bắt đầu tăng

Cảm ơn bạn đã sử dụng MySQL!

Kết nối trong cơ sở dữ liệu là gì?

Kết nối cơ sở dữ liệu là một cơ sở trong khoa học máy tính cho phép phần mềm máy khách nói chuyện với phần mềm máy chủ cơ sở dữ liệu, cho dù trên cùng một máy hay không. Một kết nối được yêu cầu để gửi các lệnh và nhận câu trả lời, thường là ở dạng tập kết quả. Kết nối là một khái niệm chính trong lập trình tập trung vào dữ liệu.a facility in computer science that allows client software to talk to database server software, whether on the same machine or not. A connection is required to send commands and receive answers, usually in the form of a result set. Connections are a key concept in data-centric programming.

Làm cách nào để kết nối MySQL?

Để kết nối với máy chủ MySQL:..
Xác định vị trí máy khách dòng lệnh MySQL.....
Chạy khách hàng.....
Nhập mật khẩu của bạn.....
Nhận một danh sách các cơ sở dữ liệu.....
Tạo một cơ sở dữ liệu.....
Chọn cơ sở dữ liệu bạn muốn sử dụng.....
Tạo một bảng và chèn dữ liệu.....
Hoàn thành làm việc với máy khách dòng lệnh MySQL ..

Tên kết nối trong MySQL Workbench là gì?

Nhập tên cho kết nối trong trường Kết nối tên kết nối.Chọn Tiêu chuẩn (TCP/IP) là loại kết nối.Nhập địa chỉ IP của máy chủ của bạn vào trường HOSTNAME.Chỉ định các cổng của Cameron là 3306 3306.. Select “Standard (TCP/IP)” as the “Connection Type”. Enter your server's IP address in the “Hostname” field. Specify the “Port” as “3306”.

MySQL có thể có bao nhiêu kết nối?

Theo mặc định, 151 là số lượng kết nối máy khách đồng thời được phép tối đa trong MySQL 5.5.Nếu bạn đạt đến giới hạn của MAX_Connections, bạn sẽ nhận được quá nhiều lỗi kết nối khi bạn cố gắng kết nối với máy chủ MySQL của mình.Điều này có nghĩa là tất cả các kết nối có sẵn được sử dụng bởi các khách hàng khác.151 is the maximum permitted number of simultaneous client connections in MySQL 5.5. If you reach the limit of max_connections you will get the “Too many connections” error when you to try to connect to your MySQL server. This means all available connections are in use by other clients.