Những ưu / nhược điểm của việc chia ngày và thời gian thành các trường riêng biệt so với sử dụng kiểu dữ liệu datetime và lưu trữ ngày trong một trường duy nhất là gì?


7

Cơ sở dữ liệu của tôi cực kỳ lớn và đang phát triển với tốc độ ~ 20 triệu hàng / ngày. Tôi có dữ liệu dấu thời gian rất quan trọng nhưng hầu hết các báo cáo dựa trên phạm vi ngày và tuần so với tuần hoặc tháng so với tháng. Thời gian thỉnh thoảng được hiển thị trong tập kết quả nhưng không bao giờ được sử dụng làm tiêu chí. Vì điều này, tôi nghĩ rằng tôi sẽ tiết kiệm không gian lưu trữ đáng kể với một chỉ mục theo ngày so với trường thời gian kết hợp. Tôi không chắc chắn liệu tôi cũng sẽ thấy hiệu suất tăng trong các lựa chọn của mình hay nếu có bất kỳ nhược điểm nào khi chia thành 2 trường.


1
Tôi chỉ thấy ưu và không có khuyết điểm - với yêu cầu của bạn - nhưng tôi chắc chắn bạn sẽ nhận được câu trả lời kỹ lưỡng hơn.
ypercubeᵀᴹ

1
Đồng ý với @ypercube tôi sẽ đẩy mạnh và xem xét thêm weekmonthcác lĩnh vực.
dezso

Một nhược điểm của việc phân tách là nếu bất kỳ ai muốn ánh xạ cùng một bảng trong trình ánh xạ ORM và nếu trình ánh xạ đó không hỗ trợ một hoặc cả hai kiểu dữ liệu đó.
JM Hicks

Theo như đề cập về độ rộng chỉ mục hẹp hơn, bạn sẽ không xem xét điều đó một mình, nhưng việc bỏ thành phần thời gian không cần thiết khỏi các hàng chỉ mục có thể làm giảm đáng kể tổng số hàng chỉ mục duy nhất cần được lưu trữ trong chỉ mục. Ví dụ: nếu chỉ mục được xác định chủ yếu bởi dữ liệu dấu thời gian và 20 triệu. các hàng đủ trải đều theo thành phần thời gian, sau đó loại bỏ thành phần thời gian có thể giảm số lượng các hàng chỉ mục mỗi ngày theo tỷ lệ 1000 hoặc 10 của 1000 đến 1.
JM Hicks

Câu trả lời:


13

Đối với mục đích báo cáo, việc tách trường thành ngày và giờ có một số lợi ích. Một số lợi ích có thể bạn có thể nhận ra bao gồm:

  • Bạn có thể tạo một bảng tham chiếu ngày (giống như thứ nguyên ngày trong kho dữ liệu) với sự phân chia của bạn thành tuần, tháng, v.v. Điều này có thể được khóa vào ngày và được sử dụng với phép nối.

  • Phân tích theo thời gian trong ngày dễ dàng hơn với trường thời gian riêng biệt. Bạn cũng có thể làm tròn thời gian đến một hạt thích hợp và tạo một bảng tham chiếu.

  • Chỉ mục sẽ hẹp hơn một chút mặc dù mỗi hàng lá vẫn có tham chiếu trang 6 byte (IIRC), do đó, nó không phải là một tổng thể tiết kiệm tuyệt vời như vậy.

Đối với ứng dụng của bạn, bạn có thể nhận được một chiến thắng từ bảng tham chiếu ngày (tạo một cụm PK theo ngày để tra cứu hiệu quả), có thể sẽ hiệu quả hơn so với việc không chuẩn hóa tuần và tháng trên bảng lớn của bạn.


3

Hiệu suất chỉ mục không nên thay đổi.

Trong một mảng hoặc cấu trúc cây được sắp xếp (nghĩa là chỉ mục), yêu cầu "tất cả các mục nhập bằng" yêu cầu tra cứu các mục nhập đầu tiên và cuối cùng trong phạm vi, tương tự như khi yêu cầu "tất cả các mục nhập lớn hơn hoặc bằng nửa đêm và nhỏ hơn nửa đêm ".

Điều có thể thú vị là một chỉ mục trên MONTH(datetimecol>)và các biểu thức thường được sử dụng khác trong các truy vấn của bạn, điều này sẽ cho phép sử dụng quét chỉ mục để tìm tất cả các hàng có tháng phù hợp, nếu bạn muốn trao đổi thêm không gian cho chỉ mục này để tăng hiệu suất.

Từ POV không gian lưu trữ, tôi nghi ngờ nó quan trọng so với kích thước của các bảng dữ liệu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.