INSERT mất hơn 5 giờ, khi chèn nhiều hơn số lượng hàng cụ thể


8

Khi chèn ít hơn khoảng 1.350.000 hàng vào bảng, tất cả chỉ mất khoảng 2 phút, tuy nhiên khi số lượng hàng được chèn lớn hơn, thì thời gian cần thiết để chèn dữ liệu tăng lên khoảng 5 giờ.

Vấn đề không được kết nối với truy vấn hoặc chỉ mục, bởi vì mọi thứ đã hoạt động tốt trong một thời gian dài và không có gì thay đổi trong cấu trúc của truy vấn, bảng hoặc chỉ mục.

Sự cố xuất hiện lần đầu tiên khoảng 2 tuần trước và nó xuất hiện liên tục trong nhiều ngày, khi số lượng hàng được chèn lớn hơn + -1.350.000. Ví dụ: trong một ngày số hàng được chèn là 1.200.000 và quá trình này mất 2 phút, vào ngày khác số hàng là 1.450.000 và phải mất 5-6 giờ để chèn dữ liệu.

Tôi đã cố gắng xây dựng lại các chỉ mục, nhưng nó không giúp được gì.


3
Nguồn để chèn là gì?
Martin Smith

4
Bạn có thể đăng những gì chờ đợi liên quan khi chèn mất một thời gian dài như vậy?
Kin Shah

4
Chúng tôi chỉ có thể đoán trừ khi bạn cung cấp thêm thông tin. Tôi đoán là khóa leo thang xảy ra. Bạn có thể theo dõi sự chờ đợi và khóa leo thang
Shanky

1
Đây có phải là lần đầu tiên bạn cố gắng chèn 1,3 triệu hồ sơ? Bạn đang thực hiện giao dịch? Nhập khẩu số lượng lớn? Bạn đang làm loại đăng nhập nào? Nếu bạn đang thực hiện các thao tác chèn đơn giản, tôi đồng ý, hãy thử thực hiện các thao tác chèn theo đợt.
SQLburn

2
Làm thế nào để bạn nhập dữ liệu (bcp, chèn số lượng lớn, SSIS, tệp bó)? Từ đâu (lưu trữ cục bộ, cùng ổ đĩa / khác nhau, lưu trữ mạng, ..)? Lược đồ bảng là gì? Lệnh nhập khẩu là gì? Kế hoạch thực hiện (nếu đó là T-SQL đơn giản) là gì?
Mary

Câu trả lời:


14

Tôi đoán là - nếu bạn không thực sự bị chặn - rằng bạn đang đạt đến ngưỡng mà tệp dữ liệu (và / hoặc tệp nhật ký) phải tăng lên và cấu hình của bạn không được tối ưu hóa để hỗ trợ sự tăng trưởng này. Đảm bảo rằng:

  1. Tốc độ tăng trưởng tệp dữ liệu của bạn là hợp lý và có kích thước cố định (không phải%!) Đủ lớn để đáp ứng giao dịch này và bất kỳ điều gì khác có thể xảy ra đồng thời.
  2. Tương tự cho tệp nhật ký.
  3. Khởi tạo tập tin tức thì được kích hoạt . Điều này sẽ giúp tăng tốc độ tăng trưởng tệp dữ liệu nhưng không phải là sự tăng trưởng tệp nhật ký rắc rối hơn.
  4. Bạn không chèn 1,35 triệu hàng riêng lẻ trong một vòng lặp hay nói cách khác là một giao dịch lớn. Có một cái gì đó để nói về việc phá vỡ các giao dịch của bạn thành khối .

1
Aaron được chú ý với những lời đề nghị của anh ta nghe có vẻ như filegrowth trên dữ liệu hoặc logfiles. Cũng đảm bảo rằng số lượng tệp nhật ký ảo của bạn thấp.
Namphibian

4

Đây có thể là một vấn đề bộ nhớ?

Bạn có thể thấy loại hành vi này nếu một số dữ liệu phải được truy cập nhiều lần phát triển quá lớn đối với bộ nhớ và bạn bị đập đĩa từ địa ngục. Nếu bạn phải lặp qua một khối dữ liệu quá lớn đối với bộ nhớ, bạn sẽ phải đọc lại toàn bộ dữ liệu từ tệp hoán đổi cho mỗi lần vượt qua, đẩy nó vượt quá giới hạn đó có thể khiến hiệu suất của bạn rơi khỏi vách đá.


3

Bạn đang cố gắng / có thể chia chúng thành các đợt nhỏ hơn không? Khi tôi gặp phải một vấn đề tương tự, việc nhóm chúng bằng 5.000 (với GO) đã thực sự giảm thời gian cần thiết để hoàn thành một nhiệm vụ như vậy.

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.