2010-02-11 10 views
5

Tôi có một ứng dụng tải một lượng lớn dữ liệu từ twitter. Chúng tôi đã bắt đầu nhận thấy một số vấn đề hiệu suất và vì vậy tôi thiết lập SQL Profiler cho cơ sở dữ liệu ứng dụng. Tôi đã nhận thấy câu lệnh SQL sau đang được thực thi nhưng không xuất hiện ở bất kỳ đâu trong mã của tôi. Vì vậy, tôi giả sử rằng SQL Server 2005 hoặc ColdFusion 8 đang thêm các câu lệnh này vì một lý do nào đó.ColdFusion thực hiện các câu lệnh SQL không mong muốn

  1. SET TRANSACTION ISOLATION LEVEL READ COMMITTED
  2. SET FMTONLY ON select Title from Links where 1=2 SET FMTONLY OFF
  3. exec [sys].sp_datatype_info_90 -9,@ODBCVer=4
  4. EXEC sp_executesql N'set implicit_transactions off select USER_NAME() select usertype,type,name from systypes where usertype>=257'
  5. EXEC sp_execute 16,'iTunes Store'
  6. exec sp_unprepare 28
  • Tôi không có bất kỳ sự chuyển nhượng nào trong mã của tôi
  • Tất cả các truy vấn của tôi đang được chạy từ cfqueries. (Không có thủ tục lưu trữ)
  • Tôi không bao giờ chạy một thực thi hoặc báo cáo exec bất cứ nơi nào trong mã của tôi
  • Tất cả các báo cáo đang được chạy từ tài khoản người dùng cơ sở dữ liệu của tôi đặc biệt thiết lập cho ứng dụng web của tôi
  • Các báo cáo trong # 5 và # 6 được nhân rộng với nhiều số khác nhau
  • tuyên bố trong # 5 được nhân rộng với nhiều chuỗi khác nhau

tại sao các báo cáo được thêm vào, là họ cần, và nếu không làm thế nào tôi có thể ngăn chặn chúng?

Trả lời

4

1,2,3,4 có thể được hạch toán trong mã ColdFusion "bình thường" - giả sử bạn đang ở trên phiên bản 8 hoặc 9. Nó làm tất cả các loại mucking xung quanh trong backend để đảm bảo máy chủ cơ sở dữ liệu có khả năng và sẵn sàng trả lại thông tin tự động mà ColdFusion yêu cầu như một phần của CFQUERY, mặc dù nó có thể không được gọi rõ ràng trong truy vấn thực tế của bạn.

http://www.forta.com/blog/index.cfm/2007/7/6/ColdFusion-8-Can-Return-Identity-Values

Tôi không biết 5 và 6 đang làm gì.

Ngoài ra, bạn có đang sử dụng Adobe cung cấp Trình điều khiển MS SQL hoặc bạn đang sử dụng Trình điều khiển SQL MS JDBC không?Có một số khác biệt giữa việc sử dụng hai trình điều khiển:

http://cfsearching.blogspot.com/2008/03/cf8-ms-jdbc-12-driver-and-for-my-next.html

2

Không có nghĩa là bất thường khi thấy các câu lệnh xuất hiện trong hồ sơ mà bạn không thực sự gửi chính mình một cách rõ ràng từ mã.

Nhưng đó là điểm quan trọng - bạn không rõ ràng gửi họ, nhưng chúng được thực hiện ngầm như là kết quả của những hành động bạn đang thực hiện/làm thế nào bạn đang làm cho họ.

ví dụ: nếu bạn mở một recordset trong VB6 thì lặp vòng nó, bạn sẽ thấy (ví dụ) sp_cursor calls đi qua profiler - bây giờ chúng không được gọi một cách rõ ràng bởi mã, nhưng là kết quả của ADO tiến hành thông qua recordset được kết nối.

Tôi hy vọng tôi đã thực hiện một số loại cảm giác