2011-08-22 28 views
5

Chúng tôi đang tạo ra một hệ thống giao dịch cao với MySQL như DB (động cơ innodb). Chúng ta có một trình kích hoạt chèn và cập nhật trên bảng t1 đang cập nhật bảng t2 và t3. Chúng tôi đã quan sát thấy rằng bất cứ khi nào khối lượng người dùng đồng thời cao, chúng tôi đang nhận được khóa chết trên bảng t1. Chúng tôi giả định rằng kích hoạt đang phát hành một khóa bảng cho đến khi nó hoàn thành nó thực hiện. Chúng tôi giảm kích hoạt trên t1 và đáng ngạc nhiên không còn bế tắc nữa.Kích hoạt trong một hệ thống giao dịch cao

Câu hỏi của tôi:

  1. Há chẳng phải khuyến khích để có kích hoạt trong một hệ thống đánh giá cao giao dịch
  2. Nếu không kích hoạt tùy chọn khác của chúng tôi để thực hiện cùng một logic là gì.

Bảng t1 có khoảng 70.000 hàng và tăng hàng ngày.

Đánh giá cao mọi yếu tố đầu vào.

Xin cảm ơn trước.

+4

Bạn không cung cấp đủ thông tin. Phát hành 'SHOW ENGINE INNODB STATUS' sẽ cho bạn thấy nguyên nhân gây ra bế tắc. 70k hàng thực sự là không có gì, những gì bạn nên làm (nếu bạn muốn giúp đỡ) là đăng truy vấn trong câu hỏi, cấu trúc bảng và kích hoạt. Bạn có thể thay thế tên trường thực bằng các chữ cái để logic nghiệp vụ không được tiết lộ. –

Trả lời

0

Bạn có thể sử dụng giao dịch thay thế và thực hiện tất cả phía khách hàng xử lý.

START TRANSACTION; 

insert into t1; 
update t2; 
update t3; 

COMMIT; 

Hãy thử và không sử dụng cấu hình 'cập nhật lựa chọn' và 'chèn chọn' nếu bạn có thể sử dụng dữ liệu do khách hàng cung cấp. Ngoài ra InnoDB sử dụng khóa hàng tốt hơn so với khóa bảng mà MyISAM sử dụng.

Các vấn đề liên quan