mysql 数据库 额外_mysql – 拥有“额外”数据库查询有多糟糕?
簡(jiǎn)短回答:(1)確保你保持在同一個(gè)大O級(jí)別,重用連接,衡量績(jī)效; (2)想一想你對(duì)數(shù)據(jù)一致性的關(guān)注程度.
答案很長(zhǎng):
性能
從性能角度來看,一般來說,除非您已經(jīng)接近最大化數(shù)據(jù)庫(kù)資源(例如最大連接數(shù)),否則這不太可能產(chǎn)生重大影響.但是你應(yīng)該記住一些事情:
>替換“2-4”查詢的“6-8”查詢是否保持相同的執(zhí)行時(shí)間?例如如果當(dāng)前數(shù)據(jù)庫(kù)交互處于O(1),它是否會(huì)變?yōu)镺(n)?或者當(dāng)前的O(n)會(huì)變?yōu)镺(n ^ 2)?如果是,您應(yīng)該考慮這對(duì)您的應(yīng)用程序意味著什么
>大多數(shù)應(yīng)用程序服務(wù)器可以重用現(xiàn)有的數(shù)據(jù)庫(kù)連接,或者具有持久數(shù)據(jù)庫(kù)連確保您的應(yīng)用程序不為每個(gè)查詢建立新連接;否則這將使其效率更低
>在許多常見情況下,主要是在具有復(fù)雜索引和連接的較大表上,通過主鍵執(zhí)行少量查詢可能比在單個(gè)查詢中連接這些表更有效;如果在執(zhí)行此類連接時(shí),服務(wù)器不僅需要更長(zhǎng)時(shí)間來執(zhí)行復(fù)雜查詢,而且還會(huì)阻止針對(duì)受影響表的其他查詢
一般而言,關(guān)于表現(xiàn),經(jīng)驗(yàn)法則是 – 總是衡量.
一致性
但是,性能不是唯一需要考慮的方面.還要考慮您對(duì)應(yīng)用程序中數(shù)據(jù)一致性的關(guān)注程度.
例如,考慮一個(gè)簡(jiǎn)單的情況 – 表A和B具有一對(duì)一的關(guān)系,并且您使用主鍵查詢單個(gè)記錄.如果您使用單個(gè)查詢連接這些表并檢索結(jié)果,您將從A和B獲取記錄,或者從兩者中都沒有記錄,這也是您的應(yīng)用程序所期望的.現(xiàn)在考慮是否將其拆分為2個(gè)查詢(并且您沒有使用具有首選隔離級(jí)別的事務(wù)) – 您從表A獲取記錄,但在您從表B中獲取匹配記錄之前,它將被刪除/更新為另一個(gè)過程.現(xiàn)在你的應(yīng)用程序有一個(gè)來自A的記錄,但沒有來自B
這里的一般問題是 – 您是否關(guān)心您的關(guān)系數(shù)據(jù)的ACID合規(guī)性,因?yàn)樗c您正在分離的查詢有關(guān)?如果答案是肯定的,那么您必須考慮應(yīng)用程序邏輯在這些特定情況下的反應(yīng).
總結(jié)
以上是生活随笔為你收集整理的mysql 数据库 额外_mysql – 拥有“额外”数据库查询有多糟糕?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长沙霸占车位车主致歉 栏杆拆除:双方均再
- 下一篇: mysqli mysql error_m