国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

如何減少SQL請(qǐng)求

2024-08-31 00:43:44
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
看到知乎上不少類似的問(wèn)題,一個(gè)頁(yè)面請(qǐng)求200個(gè)SQL是否合理,或者一個(gè)網(wǎng)站多少pv,總SQL請(qǐng)求多少次,是否合理。
我分享一下自己對(duì)此的經(jīng)驗(yàn)。

首先為了防止某些專業(yè)挑刺人士無(wú)限制發(fā)揮,先聲明幾個(gè)前提
1:索引優(yōu)化是基礎(chǔ)工作,沒(méi)做好這個(gè)其他的不用提,但本文不展開(kāi)此內(nèi)容。
2:優(yōu)化數(shù)據(jù)庫(kù)查詢有非常多的分支,減少SQL請(qǐng)求只是其中一個(gè)領(lǐng)域,其他分支本文不涉及。
3:在部分場(chǎng)景下,甚至需要增加SQL以解決諸如分布式或其他問(wèn)題,本文不涉及。
4:運(yùn)維優(yōu)化和其他優(yōu)化手段本文不涉及。
5:產(chǎn)品業(yè)務(wù)邏輯優(yōu)化本文不涉及。
6:其他本文沒(méi)提到的內(nèi)容歡迎自行聯(lián)想,技術(shù)水準(zhǔn)高超者請(qǐng)忽略本文。


第一 查詢請(qǐng)求的分析和裁剪

線上系統(tǒng),出現(xiàn)請(qǐng)求較多,數(shù)據(jù)壓力較大(索引優(yōu)化到位的前提下),我會(huì)讓程序員輸出一段時(shí)間的查詢請(qǐng)求。(通常數(shù)據(jù)庫(kù)操作有封裝對(duì)象,直接記錄日志即可,建議寫入/dev/shm 以減少i/o壓力,如果請(qǐng)求頻次實(shí)在很高,可以取一定比例寫入日志),然后基于日志分析。

1、完全一致的查詢請(qǐng)求有多少,平均每秒會(huì)出現(xiàn)多少這樣的查詢。

   比如常見(jiàn)的,所有頁(yè)面都加載系統(tǒng)信息 select * from systeminfo;
2、基于同一數(shù)據(jù)表同一主鍵的查詢有多少,平均每秒會(huì)出現(xiàn)多少這樣的查詢
  比如 select name from userinfo where uid=10134;  select email from userinfo where uid=10134;


這兩種請(qǐng)求,是可以通過(guò)建立緩存機(jī)制來(lái)優(yōu)化的,
而且做了這個(gè)分析,會(huì)有一個(gè)很好的數(shù)據(jù)認(rèn)知
當(dāng)前數(shù)據(jù)庫(kù)每秒處理多少查詢請(qǐng)求,其中可優(yōu)化的冗余請(qǐng)求有多少,如果建立緩存可以減少多少請(qǐng)求。提升系統(tǒng)支撐性多少?
對(duì)于一些不是特別出色的開(kāi)源系統(tǒng),分析一下會(huì)發(fā)現(xiàn),可裁剪的查詢請(qǐng)求是非常巨大的。

第二 更新請(qǐng)求的分析和裁剪

更新請(qǐng)求也可以優(yōu)化,

我們一般用mysql的情況下,是先解開(kāi)binlog文件,還原為文本文件,然后分析基于同一數(shù)據(jù)表,同一主鍵的更新請(qǐng)求有多少,平均每個(gè)時(shí)間段出現(xiàn)多少這樣的請(qǐng)求
舉例1:
update user set lastacttime=.... where uid=10314; 經(jīng)常更新最后活躍時(shí)間
舉例2:
update posts set views=views+1 where pid=10004211; 更新同一個(gè)帖子顯示數(shù)字

如果這樣的請(qǐng)求較多,那么可以有針對(duì)性的建立隊(duì)列,定時(shí)異步更新。
在異步更新過(guò)程中
范例1 多條請(qǐng)求只要記住同一主鍵最后一條即可;
范例2 多條請(qǐng)求可以在程序中合并,對(duì)數(shù)據(jù)庫(kù)操作只進(jìn)行一次。
這樣更新請(qǐng)求頻次就極大下降了。

如果線上有實(shí)時(shí)性要求,線上可以保持一個(gè)內(nèi)存數(shù)據(jù)做同步更新。

方法其實(shí)很簡(jiǎn)單,但是很有效

簡(jiǎn)單總結(jié)
第一,要隨時(shí)了解自己的讀寫請(qǐng)求頻次情況
第二,一定時(shí)間范圍內(nèi)針對(duì)同數(shù)據(jù)表,同主鍵的讀寫請(qǐng)求,均是可優(yōu)化,可裁剪的,但是也要考慮當(dāng)時(shí)的系統(tǒng)負(fù)載構(gòu)成和請(qǐng)求頻次、影響度,抓大放小,解決主要問(wèn)題即可。

就這樣,其他方面,參見(jiàn)前提說(shuō)明。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 枣阳市| 鄂伦春自治旗| 班戈县| 宁夏| 安岳县| 长兴县| 马鞍山市| 舒兰市| 开远市| 海林市| 雷山县| 贡山| 阿荣旗| 嘉祥县| 上蔡县| 汕头市| 神农架林区| 泰兴市| 德兴市| 根河市| 秦安县| 利津县| 中卫市| 新安县| 民和| 婺源县| 潼南县| 潞城市| 沐川县| 宜君县| 怀仁县| 新蔡县| 黄梅县| 温泉县| 宜宾县| 凌源市| 桃园县| 永州市| 永嘉县| 阳东县| 富蕴县|