Tôi đã từng làm việc với cơ sở dữ liệu MySQL (Terabyte +) rất lớn. Bảng lớn nhất mà chúng tôi có đúng là hơn một tỷ hàng.
Nó đã làm việc. MySQL xử lý dữ liệu một cách chính xác hầu hết thời gian. Nó cực kỳ khó sử dụng mặc dù.
Chỉ sao lưu và lưu trữ dữ liệu đã là một thách thức. Sẽ mất nhiều ngày để khôi phục bảng nếu chúng tôi cần.
Chúng tôi có rất nhiều bảng trong phạm vi 10-100 triệu hàng. Bất kỳ sự tham gia quan trọng nào vào các bảng đều quá tốn thời gian và sẽ mất mãi mãi. Vì vậy, chúng tôi đã viết các thủ tục được lưu trữ để 'đi bộ' các bảng và xử lý các phép nối đối với các phạm vi của 'id. Theo cách này, chúng tôi sẽ xử lý dữ liệu 10-100.000 hàng cùng một lúc (Kết hợp với 1-100.000 của id rồi 100.001-200.000, v.v.). Điều này nhanh hơn đáng kể so với việc kết hợp với toàn bộ bảng.
Việc sử dụng các chỉ mục trên các bảng rất lớn không dựa trên khóa chính cũng khó hơn nhiều. Mysql lưu trữ các chỉ mục trong hai phần - nó lưu trữ các chỉ mục (không phải chỉ mục chính) dưới dạng chỉ mục cho các giá trị khóa chính. Vì vậy, việc tra cứu chỉ mục được thực hiện thành hai phần:Đầu tiên MySQL đi đến một chỉ mục và lấy từ nó các giá trị khóa chính mà nó cần tìm, sau đó nó thực hiện tra cứu thứ hai trên chỉ mục khóa chính để tìm các giá trị đó ở đâu.
Điểm mấu chốt của điều này là đối với các bảng rất lớn (1-200 triệu hàng cộng thêm), việc lập chỉ mục so với các bảng là hạn chế hơn. Bạn cần ít chỉ mục hơn, đơn giản hơn. Và thực hiện ngay cả những câu lệnh chọn đơn giản không trực tiếp trên một chỉ mục có thể không bao giờ quay trở lại. Mệnh đề phải ở đâu đạt chỉ mục hoặc quên nó.
Nhưng tất cả những gì đang được nói, mọi thứ đã thực sự hoạt động. Chúng tôi có thể sử dụng MySQL với các bảng rất lớn này và thực hiện các phép tính cũng như nhận được câu trả lời chính xác.