PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Kế hoạch Cửa hàng Cột

Qua pgsql-general, Bráulio Bhavamitra hỏi:

Đây là một câu hỏi khá thú vị. Thay thế hoàn toàn cửa hàng dựa trên hàng hiện tại không phải là một ý tưởng hay:nó đã phục vụ chúng tôi cực kỳ tốt và tôi khá chắc rằng việc thay thế hoàn toàn bằng cửa hàng dạng cột sẽ là thảm họa về hiệu suất đối với các trường hợp sử dụng OLTP.

Một số cột. Hình ảnh do Yiming Sun cung cấp trên Flickr

Điều đó không có nghĩa là cửa hàng dạng cột nói chung là một ý tưởng tồi - bởi vì thực tế không phải vậy. Họ chỉ có một trường hợp sử dụng hạn chế hơn là "toàn bộ cơ sở dữ liệu". Đối với các truy vấn phân tích trên dữ liệu chủ yếu là phần phụ, cửa hàng theo cột là cách đại diện thích hợp hơn nhiều so với cửa hàng dựa trên hàng thông thường, nhưng không phải tất cả cơ sở dữ liệu đều là phân tích.

Tuy nhiên, để đạt được hiệu suất đáng quan tâm, bạn cần phải làm nhiều việc hơn là chỉ thay đổi bộ nhớ cơ bản:bạn cần đảm bảo rằng phần còn lại của hệ thống có thể tận dụng cách trình bày đã thay đổi, để nó có thể thực thi các truy vấn một cách tối ưu; chẳng hạn, bạn có thể muốn các tổng hợp hoạt động ở chế độ SIMD thay vì một giá trị tại một thời điểm như hiện nay. Bản thân đây là một công việc lớn và cũng có những thách thức khác.

Hóa ra, có một nhóm tại 2ndQuadrant đang làm việc chính xác về những vấn đề này. Chúng tôi đã đăng một bản vá vào năm ngoái, nhưng nó không thú vị lắm - nó chỉ cải thiện phần trăm một chữ số trong điểm TPC-H; không đủ để làm phiền cộng đồng phát triển (đó là một bản vá khá xâm lấn). Chúng tôi muốn nhiều hơn thế.

Trong thiết kế của chúng tôi, cột hay không sẽ là một tùy chọn:bạn sẽ có thể nói Kính gửi máy chủ, đối với bảng này, vui lòng thiết lập bộ nhớ cột cho tôi, bạn có được không? Xin chân thành cảm ơn . Và sau đó bạn sẽ nhận được một bảng có thể chậm hơn để sử dụng thường xuyên nhưng sẽ ổn định cho việc phân tích. Đối với hầu hết các bảng của bạn, cửa hàng dựa trên hàng hiện tại vẫn có thể là lựa chọn tốt nhất, vì lưu trữ dựa trên hàng phù hợp hơn nhiều với các trường hợp chung hơn.

Chúng tôi chưa có lịch thời gian. Hãy theo dõi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để làm cho một tiện ích mở rộng không thể di dời?

  2. Khi nào chúng ta có thể sử dụng số định danh thay cho tên của nó trong PostgreSQL?

  3. Làm cách nào để đặt giới hạn kích thước cho kiểu dữ liệu int trong PostgreSQL 9.5

  4. Làm cách nào để tạo bản sao lưu của một bảng trong cơ sở dữ liệu postgres?

  5. Rownum trong postgresql