2009-12-22 66 views
0

我想知道是否有可以替代cfquery的java方法/對象,它們都允許變量衛生和更好的緩存方法。Coldfusion可以使用Java方法/對象來獲得更好的cfquery性能嗎?

我知道你可以使用信息模式來獲取數據類型和字符長度,然後用它來驗證數據類型&查詢中變量的長度。

但隨着大家轉換爲使用cfqueryparam綁定變量和可變衛生,還可以防止使用在CFQUERY緩存。

所以我個人希望有更好的方法或腳本,以獲得更多的性能和可擴展性...

,我認爲我們需要一個新的方式或CFQUERY緩存的方法。因爲我們真正想要的是不緩存幾分鐘的x個,但直到緩存數據的變化,使用新鮮的數據,然後緩存回來,直到再次數據的變化..

而是多年來,我們」 VE必須計算我們要多久緩存ColdFusion的一個CFQUERY,當數據被更改或不不給很多的控制或意識的..

這是否有道理?

+1

我沒有找到有用的查詢的內置緩存。我通常將它們自己緩存到SESSION或APPLICATION範圍。 – ale 2009-12-22 17:57:06

+2

「使用cfqueryparam ...防止在cfquery上使用緩存」?自CF8以來不是真的 – Henry 2009-12-22 21:35:47

+0

我的歉意,我沒有使用cf8,直到這份工作,不知道你可以使用cfqueryparam緩存。 – crosenblum 2011-02-18 15:26:53

回答

5

首先,讓我們消除一種誤解。在CF8 +上,您可以緩存使用cfqueryparam的查詢。我不太清楚「每個人都在轉換」的含義,因爲使用它已被廣泛認爲是一段時間的最佳做法。

所以,我認爲你的問題實際上是沒有意義的。雖然你可以手動緩存查詢(而我這樣做其他數據類型)cfqueryparam並不是一段時間內這樣做的理由。

+0

1。我使用的是cf8,大多數查詢使用cfqueryparam,它允許可變數據類型,並使用綁定變量緩存方法。 2.我想知道是否有其他的java方法獲得更好的性能...... – crosenblum 2009-12-22 06:08:27

+1

你是否改變了cfqueryparam中的變量?如果是這樣,那麼不會以任何方式擊敗緩存嗎? – 2009-12-22 15:19:51

+1

@crosenblum,我不知道我明白。你的評論說你使用cfqueryparam進行緩存,但你的問題說他們是互斥的。你在使用緩存嗎? 另外,緩存不會提高DB性能,它會減少數據庫的使用。它們是有區別的。 另外,如果你需要更多的性能,你的數據庫可能是第一個看的地方,而不是CF層。儘管可能有方法通過Java提高性能,但我相信它們可能很小,並且很煩人。 – 2009-12-22 15:58:08

1

如果您正在尋找用於訪問數據的一個「另類」的方法,ORM(對象關係映射)是要走的路。如果您使用的是CF9,則Hibernate庫(Java)將用於管理數據的訪問和緩存。

CF7 +用戶可以使用由Mark Mandel構建的用於ORM功能的Transfer庫。

+1

orm如何提供比正常的cfqueries更好的性能? – crosenblum 2009-12-22 09:49:03

+0

有不同的方法可以利用ORM,這會極大地影響性能。 ORM可以使用lazyload方法,它不會從數據庫加載(請求)數據,直到請求數據。此時它會將後續請求緩存在內存中。當您使用ORM更新數據時,它將更新緩存。這一切都在記憶中。你可以看到這將如何大大提高繁忙系統的性能。 – jarofclay 2009-12-22 18:40:55

0

除了jarofclay的答案,我想指出,轉讓ORM具有內置緩存系統(雖然未來的版本將允許使用一些更好的現有解決方案),這是它如何提供更好的性能。任何方式,我最好從模式和查詢優化開始,並嘗試使用緩存,它可以在真正不同的層次上完成:從db查詢到渲染內容。

例如,Railo的新版本支持了一些企業級高速緩存引擎喜歡的Ehcache。

海事組織這是解決你的性能任務比試圖惹惱Java和查詢更好的方法。如果我理解正確,他們仍然會運行相同的數據源,甚至可能使用相同的底層字節碼。

相關問題