2010-02-11 9 views
5

Mam aplikację, która ładuje ogromną ilość danych ze Twittera. Zaczęliśmy zauważać pewne problemy z wydajnością, dlatego też skonfigurowałem program SQL Profiler dla bazy danych aplikacji. Zauważyłem, że następujące instrukcje SQL są wykonywane, ale nie pojawiają się nigdzie w moim kodzie. Dlatego zakładam, że albo SQL Server 2005, albo ColdFusion 8 dodają te instrukcje z jakiegoś powodu.ColdFusion wykonywanie niechcianych instrukcji SQL

  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
  • Nie mam żadnych transakcji cftrans w moim kodzie
  • Wszystkie moje zapytania są pobierane z cfqueries. (bez procedury składowane)
  • Nigdy nie używam execute lub exec nigdzie w moim kodu
  • Wszystkie te stwierdzenia są biegł z mojego konta użytkownika bazy danych, specjalnie skonfigurowane do mojej aplikacji internetowej
  • stwierdzenia zawarte w # 5 i 6 są replikowane z wielu różnych numerów
  • oświadczenie w # 5 są replikowane z wielu różnych ciągów

Dlaczego dodawane są te wypowiedzi, są one potrzebne, a jeśli nie, w jaki sposób można je zatrzymać?

Odpowiedz

4

1,2,3,4 mogą być rozliczane w „normalnym” kodu ColdFusion - zakładając, że jesteś w wersji 8 lub 9. wykonuje wszelkiego rodzaju grzebiąc w zapleczu, aby zapewnić, że serwer bazy danych jest w stanie i jest gotowy do automatycznego zwracania informacji, które żąda ColdFusion w ramach CFQUERY, nawet jeśli nie jest to jawnie wymagane w aktualnym zapytaniu.

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

nie mam pojęcia co 5 i 6 robisz.

Czy używasz również sterownika Adobe MS SQL lub używasz sterownika MS JDBC SQL?Istnieją pewne różnice między używaniem dwóch sterowników:

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

2

W żaden sposób nie można zobaczyć, że w profilerze pojawiają się stwierdzenia, że ​​w rzeczywistości nie wyśle ​​się bezpośrednio z kodu.

Ale to kluczowy punkt - ty nie wyraźnie je wysłać, ale są one wykonane w sposób dorozumiany w wyniku działań wykonujesz/jak robisz im.

np. jeśli otworzysz zestaw rekordów w VB6, a następnie iterujesz wokół niego, zobaczysz (na przykład) wywołania sp_cursor przechodzące przez profiler - teraz nie są one jawnie wywoływane przez kod, ale są wynikiem ADO przechodzenia przez podłączony zestaw rekordów.

Mam nadzieję, że zrobiłem jakiś sensie