2011-08-17 17 views
5

Chúng tôi có phần mềm "giống như crm" đơn giản trong công ty của chúng tôi. Có một số truy vấn phức tạp đã dành thời gian, truy vấn sử dụng hàng ngày ... vì vậy tôi đang thử nghiệm một số sửa đổi để sử dụng Bảng tạm thời để thay thế tất cả các phép nối phức tạp và truy vấn phụ mà chúng ta cần.Bảng tạm thời MYSQL - Cách xem các bảng hoạt động

Cho đến nay thực sự tốt, có tốc độ 90% +.

Kể từ khi một ứng dụng web (codeigniter + mysql), tôi dự định đặt nó trong môi trường "sản xuất thử nghiệm" để 50% người dùng có thể giúp tôi kiểm tra nó. Tôi muốn theo dõi các bảng đang hoạt động và nếu có thể cho mỗi kết nối.

Câu hỏi của tôi là - Có cách nào tôi có thể xem tất cả các BẢNG TEMPORARY đang hoạt động trong cá thể mysql không? Có thể xem dữ liệu của nó?

Tôi đã đọc nội dung nào đó về PLUGIN hoặc một cái gì đó tương tự, nhưng bài viết đã quá lộn xộn và tôi không thể hiểu được.

Cảm ơn rất nhiều và xin lỗi vì tiếng anh của tôi - không phải là tiếng mẹ đẻ của tôi.

+0

thuộc về http://www.serverfault.com H & Đ dành cho quản trị viên hệ thống và chuyên gia hỗ trợ máy tính để bàn – Mchl

Trả lời

-1

Khi tập dữ liệu của bạn phát triển lớn hơn, các bảng tạm thời sẽ không giúp bạn. Cuối cùng, họ giúp đỡ như thế nào? Dữ liệu phải được sao chép vào các bảng sau khi bạn tính toán kết quả, tại sao không lưu lại kết quả bằng memcached?

Ngoài ra, tôi đã thấy các cơ sở dữ liệu có phần lớn (hàng chục gigabyte) và đang chạy khỏi một máy tính duy nhất và các truy vấn đang chạy nhanh. Có một câu hỏi cho dù bạn cấu hình máy chủ cơ sở dữ liệu của bạn đúng cách (phần mềm và phần cứng). Bạn có thể đang gặp phải tình trạng tăng tốc tạm thời, nhưng không có gì đảm bảo rằng nó sẽ hoạt động vĩnh viễn. Tôi muốn tối ưu hóa ứng dụng, truy vấn, phần mềm và phần cứng cần thiết để chạy ứng dụng và sau đó tôi sẽ lưu lại kết quả bằng memcache trừ khi bạn cần bản sao nóng mới nhất của kết quả truy vấn.

+1

Không đồng ý. Bảng tạm thời rất hữu ích cho các truy vấn phức tạp khi bạn có nhiều cập nhật với dữ liệu từ nhiều bảng. –

+0

@michaelhanon sự không đồng ý của bạn không đề cập đến hoặc tham khảo một thực tế duy nhất. Nó đơn giản có nghĩa là ý kiến ​​cá nhân của bạn. Bạn có thể không đồng ý, nhưng điều đó không có nghĩa là bạn đúng. –

4

bảng temp = tạm thời, nó xóa ngay sau khi truy vấn

không có giải pháp trực tiếp, ngoại trừ đăng nhập tất cả các truy vấn và thực hiện một-by-một đến kỳ thi mà truy vấn yêu cầu tmp_table

các biến hệ thống như Created_tmp_tables có thể đưa ra một số ý tưởng

mysql> show status like '%tmp%'; 
+-------------------------+-------+ 
| Variable_name   | Value | 
+-------------------------+-------+ 
| Created_tmp_disk_tables | 0  | 
| Created_tmp_files  | 0  | 
| Created_tmp_tables  | 0  | 
+-------------------------+-------+ 
1

một trong những vấn đề của bảng tạm thời được thực sự theo dõi việc sử dụng, sau đó là chi phí của việc tạo ra, lập chỉ mục và xóa chúng - đặc biệt là với một Appli web cation trong đó thời gian tồn tại của bảng tạm thời thường là miễn là thời gian tồn tại của yêu cầu HTTP.

Trường hợp kết quả được biên dịch trước (ví dụ: lượt xem vật chất) sẽ có lợi, tôi thiết lập bảng thông thường, thêm trường tham chiếu ID kết nối MySQL/id phiên web/truy vấn nguồn + thời gian tạo tùy thuộc trên TTL cho dữ liệu và liệu nó có được chia sẻ hay không.

Ngoài việc theo dõi quá trình sử dụng bảng, nó giúp việc điều chỉnh truy vấn dễ dàng hơn và tất nhiên, lược đồ được ghi lại tốt hơn.

-1

Tôi tin rằng nó không có ý nghĩa trong bảng tạm thời xem vì chúng sống trong khi kết nối và chết sau khi đóng kết nối. Nhưng có một thực tế quan trọng về bảng tạm thời. Vì vậy, nếu bạn sử dụng kết nối liên tục trong bảng tạm thời của tập lệnh sẽ tồn tại trong suốt quá trình kết nối này và khách hàng sử dụng kết nối này sẽ có quyền truy cập vào cùng một bảng tạm thời. Cũng trong trường hợp này bảng tạm thời sẽ tiêu thụ tài nguyên hệ thống.Để tránh nó, bạn nên loại bỏ bảng tạm thời bằng tay sau khi chạy truy vấn cần thiết truy vấn được sử dụng bảng tạm thời này.