第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在MySQL語句中使用MySQL自帶函數(shù)效率問題

在MySQL語句中使用MySQL自帶函數(shù)效率問題

藍山帝景 2018-08-29 12:29:47
如題,從我目前所見所知都是不要再sql語句中使用mysql自帶的函數(shù)而去使用PHP中的函數(shù),但是個人內(nèi)心一直對這種說法不太信服,如果是這樣 那么mysql自帶函數(shù)存在的意義是什么呢?
查看完整描述

2 回答

?
慕無忌1623718

TA貢獻1744條經(jīng)驗 獲得超4個贊

每個工具都有自己的定位,以及特定的使用場景。如果不在其擅長的場景下使用很可能你會遇上很多的痛苦。下面嘗試通過描述下mysql函數(shù)的使用場景來回答題主的問題。

先看看mysql的一些個性:
1:單表千萬級別(優(yōu)化到極致能達到億級別)行記錄存儲,簡單條件(最好條件上有索引,當然也需要看具體case)查詢
2:mysql喜歡大內(nèi)存(可以將大量的索引直接放到內(nèi)存中),喜歡高性能IO(比如SSD)
3:高并發(fā)的時候,CPU資源消耗也是非常嚴重的。如果峰值請求的時候,給遇上一個mysql函數(shù)(需要CPU做計算),那就很可能因為一個簡單mysql函數(shù)釀成了悲劇。mysql出事故的時候,load很容易飆到100+

下面再看我們系統(tǒng)的場景
1:mysql不是系統(tǒng)的瓶頸
該場景下可以隨意的使用mysql提供的特性功能,例如msyql函數(shù),多方便好用啊。較少了應(yīng)用層的工作量。而且對你系統(tǒng)性能沒有多大的影響。
舉例說明:小型系統(tǒng),請求量小,數(shù)據(jù)存儲量小,mysql server內(nèi)存充足,統(tǒng)計需求(一個sql跑一個晚上你也不擔心)

2:mysql即將(或者正在)是系統(tǒng)的瓶頸
這個時候mysql最好僅僅當做存儲來用,盡量不做任何額外的計算。優(yōu)化的時候,會盡可能的把計算消耗的資源移到應(yīng)用層去做。盡量保證mysql僅僅做儲存工作。另外使用mysql函數(shù)很可能走不了索引,那個更悲劇了,這樣系統(tǒng)更沒辦法抗住大并發(fā)。


查看完整回答
反對 回復 2018-09-09
?
慕妹3242003

TA貢獻1824條經(jīng)驗 獲得超6個贊

用mysql自帶函數(shù)有什么不好?
1.很可能造成where后的條件無法走索引
2.把一些php層面簡單的業(yè)務(wù)邏輯交給mysql來做,加大了mysql的壓力(盡管可能你看來執(zhí)行一次sql語句影響很小),對小系統(tǒng)而言沒什么。如果對于大型系統(tǒng),那會是災(zāi)難。大型系統(tǒng)的瓶頸基本都在數(shù)據(jù)庫層面難以擴展,php很容易的水平擴展,php不會是瓶頸,因此,盡可能的降低數(shù)據(jù)庫的處理壓力,包括減少查詢次數(shù)通過cache來解決,減少每次查詢的時間則通過索引以及盡可能的業(yè)務(wù)在php層面處理,mysql只做最基本簡單的查詢少使用自帶函數(shù)。

那mysql自帶函數(shù)為什么存在?
1. 比如一些數(shù)據(jù)初始化是可以用,或者存儲過程等..
2. 小型系統(tǒng)可以使用mysql自帶函數(shù),反正沒啥瓶頸
3. 不能因為大型系統(tǒng)不建議查詢用自帶函數(shù)就不提供,因為考慮到普遍的需求
比如php框架的ORM設(shè)計,很費資源又慢,大型系統(tǒng)也不建議用,小系統(tǒng)就隨便用,方便又快速。
總結(jié)就是不能因為一些場景不建議用就不提供...方便快速的代價就是性能。
以上純屬個人觀點...


查看完整回答
反對 回復 2018-09-09
  • 2 回答
  • 0 關(guān)注
  • 3563 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號