Tôi nghĩ rằng tôi có một sự hiểu biết cơ bản về điều này, nhưng tôi hy vọng rằng ai đó có thể cung cấp cho tôi thêm chi tiết vì tôi quan tâm đến việc tìm hiểu thêm về hiệu suất cơ sở dữ liệu.Khi nào một truy vấn MySQL chậm trên một kết nối nhất định ảnh hưởng đến các kết nối khác?
Cho phép nói rằng tôi có cơ sở dữ liệu rất lớn, với hàng triệu mục nhập, cơ sở dữ liệu hỗ trợ nhiều kết nối. Thực hiện các truy vấn đơn giản trên cơ sở dữ liệu sẽ chậm vì có quá nhiều dữ liệu. Tôi đang cố gắng để hiểu chính xác khi một truy vấn trên một kết nối nhất định bắt đầu có ảnh hưởng trực tiếp đến hiệu suất của các truy vấn chạy trên các kết nối khác.
Nếu một kết nối khóa một số thành phần, tôi hiểu rằng sẽ giữ các truy vấn chạy các kết nối khác cần các yếu tố đó. Ví dụ: đang làm:
SELECT FOR UPDATE
sẽ khóa những gì bạn đang chọn.
gì xảy ra khi bạn làm điều gì đó đơn giản như:
SELECT COUNT(*) FROM myTable
phép nói rằng chúng ta có một bảng với một tỷ hàng để chạy các tính sẽ mất một thời gian (chạy trên InnoDB). Nó có ảnh hưởng đến các truy vấn chạy trên các kết nối khác không?
gì nếu bạn chọn một số lượng lớn các dữ liệu sử dụng SELECT và JOIN, như:
SELECT * FROM myTable1 JOIN myTable2 ON myTable1.id = myTable2.id;
không có bất cứ điều gì khóa cho các truy vấn khác tham gia?
Tôi rất khó để biết truy vấn nào sẽ ảnh hưởng trực tiếp đến hiệu suất của các truy vấn chạy trên các kết nối khác.
Cảm ơn
Cảm ơn, điều đó giúp hiểu rõ mặt phần cứng của mọi thứ rõ ràng hơn nhiều. Tuy nhiên, từ góc đầu tiên, tôi vẫn không hiểu chính xác cách tôi có thể tự tin rằng một truy vấn nhất định sẽ hoặc sẽ không gây ra khóa ... – sungiant
Không có khóa nếu bạn không cập nhật hoặc xóa (chăm sóc CASCADE hoặc TRIGGERS tác dụng phụ) một hàng nhất định trong một giao dịch, hoặc tự thiết lập khóa bằng cách sử dụng lệnh LOCK mysql. Một SELECT đơn giản sẽ KHÔNG BAO GIỜ khóa một hàng. Ngoài ra, chăm sóc động cơ MYISAM mà theo như tôi nhớ khóa toàn bộ bảng rất dễ dàng! – Sebas
Yep MyISAM thực hiện khóa mức bảng khi cập nhật/xóa. Các khóa InnoDB thực hiện khóa mức hàng nếu mệnh đề where sử dụng các khóa duy nhất hoặc khóa chính nếu không nó có thể làm khóa cấp khối hoặc các khóa bảng. –