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

Tải dữ liệu lớn nhanh hơn

Đang tải dữ liệu lớn? Để có tốc độ cao hơn, Sắp xếp trước và Tải hàng loạt

Tìm thêm tốc độ khi tải dữ liệu lớn là một thách thức trong chỉ mục ETL, reorg và cơ sở dữ liệu rất lớn (VLDB) điền các hoạt động. Một cách để tải dữ liệu lớn nhanh hơn là sắp xếp trước nó, vì vậy cơ sở dữ liệu không cần phải sắp xếp. IBM và các nhà cung cấp cơ sở dữ liệu máy tính lớn khác đã đưa ra lời khuyên đó trong nhiều thập kỷ và nó vẫn đúng trong cơ sở dữ liệu quan hệ được sử dụng trên Unix và các “hệ thống mở” khác ngày nay, bao gồm Oracle, DB2, Sybase và SQL Server.

Các điểm chuẩn trong lĩnh vực này cho thấy sự cải thiện đối với các tải không được sắp xếp tùy thuộc vào khối lượng, nhưng các nhà cung cấp sắp xếp như IRI tuyên bố rằng hiệu suất tải đã được cải thiện từ hai đến mười lần. Trong báo cáo của TUSC Consulting “Tác động của chỉ số điểm chuẩn lên tỷ lệ tải OLTP và xây dựng lại kích thước khối cơ sở dữ liệu trực tuyến trong Oracle”, chỉ riêng thử nghiệm chèn chỉ mục đơn hàng 100.000 hàng đã cho thấy dữ liệu được sắp xếp trước tải nhanh hơn 58% và yêu cầu ít không gian hơn 49%:

  • Tải theo thứ tự đã sắp xếp có tỷ lệ hàng được duy trì / giây thấp hơn 42%
  • Các phần chèn không được sắp xếp vào chỉ mục buộc phải thực hiện nhiều công việc cơ sở dữ liệu nội bộ hơn (quản lý khối và tổ chức lại không gian)
  • Trong các chỉ mục được sắp xếp theo tải, hệ số phân cụm sẽ gần với số lượng khối lá
  • Thứ tự của dữ liệu đã tải rất quan trọng đối với hiệu suất tải.

Nhiều năm sau, trong chương 13 của hướng dẫn “Quản trị cơ sở dữ liệu Oracle 11g chuyên nghiệp” của mình, Sam R. Alapati (Tư vấn Miro) đã khuyến nghị sắp xếp trước kết hợp với tải đường dẫn trực tiếp là cách nhanh nhất để tải hàng loạt Oracle (so với chèn):

Tải đường dẫn trực tiếp tùy chọn không sử dụng câu lệnh SQL INSERT để đưa dữ liệu vào bảng; thay vào đó, nó định dạng các khối dữ liệu Oracle và ghi chúng trực tiếp vào các tệp cơ sở dữ liệu. Quá trình ghi trực tiếp này loại bỏ phần lớn chi phí liên quan đến việc thực thi các câu lệnh SQL để tải bảng. Vì phương pháp tải đường dẫn trực tiếp không tranh giành tài nguyên cơ sở dữ liệu nên nó sẽ tải dữ liệu nhanh hơn nhiều so với tải dữ liệu thông thường. Đối với tải dữ liệu lớn hơn, phương pháp tải đường dẫn trực tiếp là tốt nhất và nó có thể là phương pháp khả thi duy nhất để tải dữ liệu vào bảng vì lý do đơn giản là tải thông thường có thể đòi hỏi nhiều thời gian hơn khả dụng. ”

Đối với các quản trị viên của VLDB ngày nay, đây là lúc CoSort xuất hiện, vì:

“Bên cạnh những ưu điểm rõ ràng là thời gian tải ngắn hơn, tải trực tiếp cũng giúp bạn xây dựng lại chỉ mục và sắp xếp trước dữ liệu bảng.”

CoSort theo truyền thống được sử dụng trong việc sắp xếp trước bên ngoài của một tệp phẳng sẽ là phần nhập vào tải chỉ định “direct =true” và tùy chọn này:

“SORTED INDEXES:Tham số SORTED_INDEXES báo hiệu SQL * Loader rằng dữ liệu được sắp xếp theo một chỉ mục cụ thể, giúp cải thiện hiệu suất tải.”

Tương tự, tài liệu Microsoft SQL Server chỉ định sắp xếp trước tệp là một trong những “Phương pháp tối ưu hóa nhập hàng loạt”:

Theo mặc định, thao tác nhập hàng loạt giả định rằng tệp dữ liệu không có thứ tự. Nếu bảng có chỉ mục được phân nhóm, thì bcp tiện ích, câu lệnh BULK INSERT và hàm OPENROWSET (BULK…) (Transact-SQL) cho phép bạn chỉ định cách dữ liệu trong tệp dữ liệu được sắp xếp trong một thao tác nhập hàng loạt. Dữ liệu trong tệp dữ liệu được sắp xếp theo thứ tự như bảng là tùy chọn. Tuy nhiên, bạn có thể cải thiện hiệu suất của hoạt động nhập hàng loạt nếu bạn chỉ định cùng một thứ tự cho tệp dữ liệu như bảng.

Trường / KEY trong tập lệnh CoSort SortCL thường sẽ là khóa chỉ mục (chính) dài nhất trong bảng, nhưng nó không nhất thiết phải như vậy. Theo TUSC, đối với các cột thích:

  • Ít chỉ mục dài hơn sẽ thích hợp hơn nhiều chỉ mục ngắn hơn
  • Cột hàng đầu thúc đẩy chi phí tải chỉ mục

Cũng lưu ý rằng:

  • Per Vertica và các mồi RDBMS khác, việc duy trì các cột theo thứ tự được sắp xếp sẽ tối ưu hóa hiệu suất truy vấn. Ngay cả lời khuyên cũ trong Hướng dẫn về Bảo trì và Hiệu suất Cơ sở dữ liệu của DEC’s Rdb / VMS vẫn đúng:

    “Sắp xếp trước các bản ghi bạn định lưu trữ trong bảng theo giá trị khóa chính trước khi tải chúng vào cơ sở dữ liệu. Khi các bản ghi được tải, chúng sẽ nằm kề nhau về mặt vật lý hoặc được nhóm lại, cho đến khi các bản ghi bổ sung được lưu trữ trong cơ sở dữ liệu. Việc duy trì sự sắp xếp này mang lại lợi ích cho các truy vấn chọn hàng dựa trên một dải giá trị hoặc nối nhiều hàng của một bảng với các hàng trong cùng một bảng. ”

  • Việc sắp xếp trước dữ liệu trong bảng cũng có thể tiết kiệm thời gian trong các chế độ xem. Theo “Cơ sở dữ liệu Oracle 10g:Tài liệu tham khảo đầy đủ” của Kevin Loney:

    “Việc sắp xếp dữ liệu trong chế độ xem có thể đơn giản hóa việc phát triển ứng dụng của bạn. Ví dụ:nếu mã của bạn đi qua một tập hợp các bản ghi, thì việc sắp xếp trước các bản ghi đó có thể làm cho việc xử lý và kiểm tra lỗi của bạn đơn giản hơn. Trong quá trình phát triển ứng dụng của mình, bạn sẽ biết rằng dữ liệu sẽ luôn được trả lại cho bạn theo cách có thứ tự. ”

  • Mr. Alapati cảnh báo các DBA về giới hạn của tải đường dẫn trực tiếp:
    “Lưu ý:Trong tải trực tiếp, bạn không thể sử dụng bất kỳ hàm SQL nào. Nếu bạn cần thực hiện tải dữ liệu lớn và đồng thời chuyển đổi dữ liệu trong quá trình tải, bạn gặp sự cố. Tải dữ liệu thông thường sẽ cho phép bạn sử dụng các hàm SQL để chuyển đổi dữ liệu, nhưng phương pháp này rất chậm so với tải trực tiếp. Do đó, đối với tải dữ liệu lớn, bạn có thể muốn xem xét sử dụng một trong các kỹ thuật tải / chuyển đổi mới hơn, chẳng hạn như bảng bên ngoài hoặc các hàm bảng. ”
    Tuy nhiên, chương trình CoSort’s SortCL có thể chuyển đổi dữ liệu tải trong quá trình phân loại trước ; tức là bằng cách kết hợp cùng một loại hàm SQL trong cùng một tập lệnh công việc và chuyển I / O, bao gồm:kết hợp, tổng hợp, tính toán chéo, tra cứu, chọn / lọc, chuỗi con và hàm cài đặt cũng như nhiều mục tiêu định dạng lại và báo cáo tùy chỉnh - trong cùng một thao tác sắp xếp trước.
  • Tiện ích tổ chức lại ngoại tuyến mới trong IRI Workbench (Eclipse GUI) sử dụng IRI FACT (Fast Extract) để tải dữ liệu bảng một cách nhanh chóng qua OCI, sử dụng CoSort để sắp xếp trước trên khóa chính, ghi và chạy SQL * Loader trực tiếp tải đường dẫn để tối ưu hóa và kết hợp từng bước này.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thống kê được xây dựng tùy chỉnh

  2. Cách viết câu lệnh CASE trong SQL

  3. Nghệ thuật tách biệt sự phụ thuộc và dữ liệu trong kiểm thử đơn vị cơ sở dữ liệu

  4. Alibaba Cloud

  5. Mô hình dữ liệu cho ứng dụng thời tiết