2011-11-14 59 views
2

我正在研究一個CakePHP應用程序,我正在爲其中一個模型編寫一些驗證規則。我應該限制連接到我的數據庫的數量嗎?

我有一種感覺,我現在正在對數據庫進行太多的檢查,並希望獲得對此的看法。

例如我保存到一個模型,它有很多相關的模型,因此我爲每次保存操作保存了5個不同的外部id。爲了確保所有的ID都是正確的,我有一個驗證規則,用於檢查實際上ID是否存在於數據庫的正確表中。

還有一些其他的驗證規則,但沒有太多細節,我認爲我對數據庫執行了一次保存操作約10次,以確保所有數據都是有效的。

是否有任何種類的限制我應該申請,或者是開銷相當小?

感謝

+0

沒有具體細節,很難說。 – Brad

+0

一般認爲,儘可能多地將信息傳遞給PHP並存儲它,然後您就可以在不聯繫數據庫的情況下進行操作。 –

+0

對許多SQL查詢做的事情可能會減慢你的加載時間:S說什麼是我會建議的方法。或者至少在同一筆交易中嘗試做。你有2個選項,或者帶上所有的ID和一個in_array(),或者在數據庫(約束)中做一些驗證,如果錯誤的蛋糕不會保存,你會從保存功能中得到一個錯誤...並且你可能會顯示一個錯誤 – api55

回答

0

不成熟的優化是萬惡之源。

將您的應用展開。一旦真人將其用於實際目的,您可以通過基準測試來查看您真正需要優化的位置。

0

如果你建立連接是有充分理由的(和驗證都相當靠前),那麼這將是好的連接,你必須。但是,這些驗證不可能一起進行嗎?你在使用存儲過程嗎?如果這樣做,那麼可以將一批驗證放在一個存儲過程中。這幾乎就像說你可以一起運行儘可能多的驗證規則,然後期望多個結果集(如果需要的話 - 這在某些方面會更好,而不是在一個驗證失敗時簡單地返回false,但當然取決於這些驗證的依賴關係)

爲了縮短我的文章..是否有可能將這些驗證查詢放在一起存儲在一個存儲過程中?

0

檢查您的數據庫設計是否正確。由於信息有限,您很難判斷您是否真的需要查看所有表格。但通常你不需要這樣做。

也不必要地打到數據庫不是一個好主意。這一切都取決於你的應用程序。如果你不真的需要一個非常高性能的應用程序,你可能會好起來的。讀取的開銷不會像數據庫做一些內存緩存那樣糟糕。寫入將永遠更昂貴。特別是如果你有外鍵約束。由於數據庫將檢查寫入是否有效。

最好的方法是編寫一個測試,試圖通過您的邏輯和時間在數據庫中寫入「x」記錄。這會給你一個指示,說明它是否真的是一個問題。

相關問題