Tôi hiểu những gì bạn đang cố gắng đạt được. Chào mừng bạn đến với thế giới của nhiều cơ sở dữ liệu!Máy chủ SQL 2000 hỗ trợ các bảng tạm thời được tạo bởi tiền tố một tên bảng, làm cho nó thành một bảng tạm thời có thể truy cập cục bộ (cục bộ đến phiên) và trướC## với tên bảng, cho các bảng tạm thời có thể truy cập toàn cục, ví dụ #MyLocalTable và ## MyGlobalTable tương ứng.
Máy chủ SQL 2005 trở lên hỗ trợ cả bảng tạm thời (cục bộ, toàn cầu) và biến bảng - xem ra chức năng mới trên các biến bảng trong SQL 2008 và phát hành hai biến! Sự khác biệt giữa các bảng tạm thời và các biến bảng không quá lớn nhưng nằm trong cách máy chủ cơ sở dữ liệu xử lý chúng.
tôi sẽ không muốn nói về phiên bản cũ của SQL server như 7, 6, mặc dù tôi đã làm việc với họ và nó là nơi tôi đến từ anyway :-)
Nó thường nghĩ rằng các biến bảng luôn cư trú trong bộ nhớ nhưng điều này là sai. Tùy thuộc vào mức sử dụng bộ nhớ và khối lượng giao dịch của máy chủ cơ sở dữ liệu, các trang của biến bảng có thể được xuất từ bộ nhớ và được viết bằng tempdb và phần còn lại của quá trình xử lý diễn ra ở đó (trong tempdb). Xin lưu ý rằng tempdb là một cơ sở dữ liệu trên một cá thể không có đối tượng cố định nhưng chịu trách nhiệm xử lý khối lượng công việc liên quan đến các giao dịch phụ như phân loại và các công việc xử lý khác tạm thời trong tự nhiên. Mặt khác, các biến bảng (thường với dữ liệu nhỏ hơn) được lưu trong bộ nhớ (RAM) làm cho chúng truy cập nhanh hơn và do đó ít đĩa IO hơn khi sử dụng ổ đĩa tempdb khi sử dụng các biến bảng với dữ liệu nhỏ hơn so với các bảng tạm thời. đăng nhập tempdb.
Biến bảng không thể lập chỉ mục trong khi bảng tạm thời (cả cục bộ và toàn cầu) có thể được lập chỉ mục để xử lý nhanh hơn trong trường hợp số lượng dữ liệu lớn. Vì vậy, bạn biết lựa chọn của mình trong trường hợp xử lý nhanh hơn với khối lượng dữ liệu lớn hơn bằng các giao dịch tạm thời. Cũng cần lưu ý rằng các giao dịch trên các biến bảng một mình không được ghi lại và không thể được khôi phục trong khi các giao dịch được thực hiện trên các bảng tạm thời có thể được khôi phục!
Tóm lại, các biến bảng tốt hơn cho dữ liệu nhỏ hơn trong khi các bảng tạm thời tốt hơn để dữ liệu lớn hơn được xử lý tạm thời. Nếu bạn cũng muốn kiểm soát giao dịch thích hợp bằng cách sử dụng các khối giao dịch, các biến bảng không phải là một tùy chọn để quay lại các giao dịch, vì vậy bạn nên sử dụng các bảng tạm thời trong trường hợp này.
Cuối cùng, bảng tạm thời sẽ luôn tăng đĩa IO vì chúng luôn sử dụng tempdb trong khi các biến bảng có thể không tăng, tùy thuộc vào mức độ căng thẳng của bộ nhớ.
Hãy cho tôi biết nếu bạn muốn biết các mẹo về cách điều chỉnh tempdb của mình để kiếm được hiệu suất nhanh hơn nhiều để vượt quá 100%!
Nguồn
2009-06-10 17:34:56
Tôi hy vọng bạn nhận thức được trong MySQL, các bảng tạm thời do người dùng tạo không nằm trong bộ nhớ theo mặc định! Chỉ khi bạn chỉ định ENGINE = MEMORY trong câu lệnh CREATE TABLE, bảng sẽ nằm trong bộ nhớ. Nếu không, bảng tạm thời sẽ được tạo với công cụ lưu trữ mặc định, rất có thể là MyISAM hoặc INNODB và được lưu trên đĩa. Không được gây nhầm lẫn do người dùng tạo ra với các bảng tạm thời nội bộ được tạo bởi MySQL trong quá trình kết hợp phức tạp. Chúng được tạo ra trong bộ nhớ, nếu có thể. –