Nội dung gốc không đủ cụ thể để đưa ra một gợi ý chắc chắn, nhưng danh sách đầy đủ những gì có thể được thực hiện như sau:
- Cụm cơ sở dữ liệu :Thích hợp cho các trường hợp bạn không muốn thay đổi lớp ứng dụng và cơ sở dữ liệu là tất cả những gì bạn chạm vào. Có một giới hạn về số lượng bạn có thể thoát ra khỏi một cụm cơ sở dữ liệu. Nếu khối lượng yêu cầu của bạn tiếp tục tăng, giải pháp này cuối cùng cũng sẽ thất bại. Nhưng tin tốt là bạn đã có tất cả các chức năng mà bạn đã có trong một MySQL đơn phiên bản thông thường.
- Làm sắc nét :Vì câu hỏi của bạn được gắn thẻ với MySQL và nó không hỗ trợ sharding nên nếu bạn muốn sử dụng giải pháp này, bạn cần triển khai nó trong lớp ứng dụng của mình. Trong giải pháp này, bạn sẽ phân tán dữ liệu của mình qua nhiều cơ sở dữ liệu (tốt nhất là trong nhiều phiên bản MySQL trên phần cứng riêng biệt) một cách hợp lý. Bạn sẽ có trách nhiệm tìm cơ sở dữ liệu thích hợp chứa dữ liệu được chỉ định của bạn. Đó là một trong những giải pháp hiệu quả nhất từ trước đến nay nhưng không phải lúc nào nó cũng khả thi. Lỗ hổng lớn nhất của nó là dữ liệu nằm rải rác giữa hai hoặc nhiều cơ sở dữ liệu không thể được đưa vào trong một giao dịch.
- Nhân rộng :Tùy thuộc vào tình huống của bạn, bạn có thể kết hợp sao chép cơ sở dữ liệu và có các bản sao dữ liệu của bạn trên đó. Bằng cách này, bạn có thể kết nối với chúng thay vì cơ sở dữ liệu chính và giảm tải cho nó. Định nghĩa sao chép mặc định là kịch bản chủ / tớ trong đó luồng dữ liệu là một chiều, từ chủ đến tớ. Vì vậy, những thay đổi bạn có thể thực hiện trên nô lệ trong khi sẽ được áp dụng trên salve, chúng sẽ không ảnh hưởng đến chủ. Nhưng cũng có một cấu hình sao chép chính / tổng thể trong đó luồng dữ liệu theo cả hai cách. Tuy nhiên, bạn không thể giả định tính toàn vẹn nguyên tử cho các thay đổi dữ liệu đồng thời giữa cả hai bản gốc. Cuối cùng, giải pháp này là hiệu quả nhất nếu bạn định sử dụng nó ở chế độ chính / phụ và sử dụng nô lệ để truy cập chỉ đọc.
- Bộ nhớ đệm :Có lẽ giải pháp này không nên được đưa vào đây nhưng vì gốc của bạn không từ chối nó, nên nó sẽ tiếp tục. Một trong những cách để giảm tải cơ sở dữ liệu là lưu vào bộ đệm dữ liệu của nó sau khi được trích xuất. Giải pháp này có thể có lợi đặc biệt nếu việc trích xuất dữ liệu là tốn kém. Có rất nhiều máy chủ bộ nhớ cache ngoài đó, như memcached hoặc redis . Bằng cách này, bạn có thể bỏ qua rất nhiều kết nối cơ sở dữ liệu mà chỉ để trích xuất dữ liệu.
- Các công cụ lưu trữ khác :Bạn luôn có thể chuyển sang động cơ hoạt động hiệu quả hơn nếu động cơ hiện tại không cung cấp cho bạn những gì bạn cần. Tất nhiên điều này chỉ khả thi nếu nhu cầu của bạn cho phép. Ngày nay có các công cụ NoSQL, hoạt động hiệu quả hơn nhiều so với RDBMS, hỗ trợ sharding nguyên bản và bạn có thể mở rộng quy mô tuyến tính với nỗ lực tối thiểu. Ngoài ra còn có các giải pháp dựa trên Lucene với khả năng tìm kiếm toàn văn bản mạnh mẽ, cung cấp cho bạn cùng một tính năng tự động. Trên thực tế, lý do duy nhất tại sao bạn nên sử dụng RDBMS truyền thống là hành vi nguyên tử của các giao dịch. Nhưng nếu các giao dịch không phải là điều bắt buộc, thì có nhiều giải pháp tốt hơn RDBMS.