Tempdb trong Microsoft SQL là gì, có lợi ích gì ?


Kiến trúc của hệ quản trị CSDL Microsoft SQL Server mặc định khi cài đặt sẽ tạo ra Database để lưu trữ dữ liệu tạm thời, còn gọi là Tempdb.

Trong tất cả các phiên bản của SQL Server điều có Database tạm này:

2015-02-28_014152

Vậy mục đích của Database tạm này để làm gì ?

Bài viết này tôi sẽ mô tả kỹ hơn về lợi ích của Database tạm thời này

1) Lưu các đối tượng cơ sở dữ liệu được khởi tạo bởi người sử dụng. Ví dụ các table tạm, các biến, các store proceduce tạm và các Cursor. Như các bạn thấy hình tôi Demo bên dưới, mặc dù tôi cố tình tạo table tạm “#TableTam” trên Database “TestDB” nhưng khi vào trong Tempdb tôi cũng sẽ thấy table tạm này, lý do là tất cả các đối tượng do người sử dụng tạo ra điều có vòng đời trong một phiên làm việc (transaction) nhất định. Khi kết thúc hoặc hoàn tất transaction thì các đối tượng này được cơ chế thu gom rác của SQL Server xóa đi, tuy nhiên trong quá trình còn xử lý sẽ được lưu trữ vào Database Tempdb. Việc này hạn chế các đối tượng “Rác” trong Database chính của bạn.

.         2015-02-28_014915

2) Trong quá trình xử lý dữ liệu Core của SQL cũng sinh ra các đối tượng tạm thời. Các đối tượng này cũng được lưu trữ tạm thời trong Temdb. Ví dụ: ứng dụng của bạn có rất nhiều người sử dụng và giao tiếp với CSDL liên tục, đầu tiên các dữ liệu này sẽ lưu trữ vào Database tạm này trước và sẽ lưu xuống ổ cứng vật lý sau để giảm thiểu sự tương tác đến phần cứng vật lý. để tối ưu hơn, Database Tempdb giúp trả về dữ liệu nhanh hơn khi nhiều người cùng truy vất, sort dữ liệu theo cùng câu lệnh TSQL và cùng điều kiện. Database Engine sẽ lấy kết quả từ các dữ liệu tạm này và gửi về máy trạm.

3) Dùng để lưu trữ phiên bản của dòng dữ liệu bạn đang làm việc. Ví dụ tôi mở một transaction chỉnh sửa dữ liệu một dòng trên một Database thực tế. Dòng này sẽ được ghi nhận trong Database Tempdb là có dòng dữ liệu gốc và dòng dữ liệu đã bị thay đổi. Khi tôi commit transaction, thông tin thay đổi của dòng dữ liệu cuối cùng sẽ được ghi xuống đĩa cứng và ngược lại nếu tôi rollback transaction, thông tin của dòng dữ liệu gốc vẫn còn đó và dòng dữ liệu thực tế trong Database chính vẫn chưa bị thay đổi gì, transaction xem như trả về dòng dữ liệu gốc. Mở rộng hơn trong trường hợp này, nếu không may Database Engine của bạn bị vấn đề, bạn có thể restore lại dữ liệu gốc hoặc theo từng thời điểm.

2015-02-28_020847

Bài viết sau tôi sẽ bàn về các tối ưu hóa Database Tempdb để cải thiện hệ thống

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s