Tôi đã tự hỏi liệu có một tác động hiệu quả của việc thêm một cột hàng tuần trên một bảng trong cơ sở dữ liệu Sql-Server không?RowVersion and Performance
Trả lời
Có một vài tác động về hiệu suất, chuyển đổi hàng chỉ là một tên mới cho kiểu dữ liệu dấu thời gian cũ. Vì vậy, cơ sở dữ liệu của bạn sẽ cần lưu trữ trường nhị phân bổ sung. hiệu suất của bạn sẽ bị ảnh hưởng nhiều hơn khi bạn cố gắng làm các truy vấn trên dữ liệu này như:
SELECT *
FROM MyTable
WHERE rowVersion > @rowVersion
Đó là cách phổ biến mà có thể được sử dụng để có được danh sách các mặt hàng được cập nhật kể từ @rowVersion ngoái. Điều này có vẻ ổn và sẽ hoạt động hoàn hảo cho một bảng có 10.000 hàng. Nhưng khi bạn nhận được 1M hàng, bạn sẽ nhanh chóng phát hiện ra rằng nó luôn luôn làm một bảng và hiệu suất hit của bạn là bởi vì bảng của bạn bây giờ không còn phù hợp hoàn toàn trong RAM của máy chủ.
Đây là vấn đề phổ biến gặp phải với cột rowVersion
, nó không được lập chỉ mục một cách kỳ diệu trên chính nó. Ngoài ra, khi bạn chỉ mục cột rowVersion bạn phải chấp nhận rằng chỉ mục thường sẽ bị phân mảnh theo thời gian, bởi vì các giá trị mới được cập nhật luôn nằm ở cuối chỉ mục, để lại khoảng trống trong chỉ mục khi bạn cập nhật các mục hiện có .
Chỉnh sửa: Nếu bạn không sử dụng trường rowVersion
để kiểm tra các mục được cập nhật và thay vào đó bạn sẽ sử dụng nó để đảm bảo rằng bản ghi không được cập nhật kể từ lần cuối bạn đọc, thì điều này sẽ là một cách sử dụng hoàn toàn có thể chấp nhận được và sẽ không ảnh hưởng.
UPDATE MyTable SET MyField = ' @myField
WHERE Key = @key AND rowVersion = @rowVersion
- 1. Activator.Create Performance Performance Alternative
- 2. SQL Server RowVersion
- 3. NLTK Performance
- 4. Generics vs Object performance
- 5. ReaderWriterLockSlim Extension Method Performance
- 6. linq foreach performance
- 7. JQuery Tìm Performance
- 8. Neo4J Performance Benchmarking
- 9. knockout observableArray performance
- 10. ConfigurationManager.AppSettings Concerns Performance
- 11. SimpleXML vs DOMDocument performance
- 12. công cụ Performance Monitoring cho trình duyệt
- 13. Performance Monitoring: hạch vs Graphite
- 14. Racket Interactive vs Compiled Performance
- 15. PHP 5 Reflection API performance
- 16. Neo4j cypher query slow performance
- 17. Indexing Performance bigint vs VARCHAR
- 18. http HEAD with GET performance
- 19. Performance text/html vs application/json
- 20. Android Performance - 'Tránh nội Getters/setters'
- 21. Performance Benchmark CouchDB x Relational Databases
- 22. Interpreting Multicore Performance Trace (Eclipse/Android)
- 23. F # Performance Profiler Instrumentation Không hoạt động
- 24. LINQ to Sql vs Entity Framework Performance
- 25. ASP.NET/SQL 2008 Performance Vấn đề
- 26. Hibernate Performance Thực hành tốt nhất?
- 27. Performance std :: strstr vs std :: string :: tìm
- 28. Nhận giá trị rowversion/timestamp mới nhất trong câu lệnh cập nhật - Sql Server
- 29. Performance vấn đề trên tùy chỉnh phông chữ TextView
- 30. Java Generics and numbers
so với gì? nếu bạn cần một bản đổ chuông, bạn cần một sự đổi hàng .... –
Tôi đồng ý với Mitch. Bạn sẽ sử dụng cách giải quyết nào để thay thế nó, nếu bạn cần nó? – gbn
bản sao có thể có của [Không rowversion/dấu thời gian ảnh hưởng đến hiệu suất đáng kể?] (Http://stackoverflow.com/questions/7217062/does-rowversion-timestamp-affects-performance-significantly) –