亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

SQL server 性能調優問題

SQL server 性能調優問題

慕標琳琳 2018-12-07 01:17:32
問題: 目前有一張表 Table 數據量是 100W 左右,現在有列 A到Z,每天都有幾千次的更新,更新頻繁,查詢的條件又是根據這A到Z 來判斷的,因為查詢速度太慢,想在這些列上建立索引,建立好后,查詢速度提升了很多,但是影響了增刪改操作,因為列數比較多,更新的次數太頻繁,建立索引后,系統操作時可能會經常死,但是不建立索引,查詢的又太慢。 對于這種情況,一般有幾種解決方法,詳細點,豆全部奉上。
查看完整描述

30 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

考慮到分表,由于100W的數據量不是很大,所以暫時沒必要動這塊,現在是希望做最少的修改,提高最大的性能。

查看完整回答
反對 回復 2019-01-07
?
絕地無雙

TA貢獻1946條經驗 獲得超4個贊

確實不多,但是更新的字段多,行多所以會慢,有利有弊吧。

查看完整回答
反對 回復 2019-01-07
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

如果這樣橫著拆會影響某些查詢,也可以考慮豎著拆。如果有一些大字段的話,最好把大字段單獨拆出一張表來,一般大字段只有查單條紀錄的時候才會用到,拆出大字段后,源表的查詢消耗io會減少很多

查看完整回答
反對 回復 2019-01-07
?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

很簡單,拆表么,既然查詢都要用到那個a到z的列,那就按照這個列的值來拆表。另外說一下,每天更新上千次真心不算多啊

查看完整回答
反對 回復 2019-01-07
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

可以試下將建立的索引存儲改到其他文件組,使用單獨的磁盤分與數據文件分開

查看完整回答
反對 回復 2019-01-07
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

可以試下將建立的索引存儲改到其他文件組,使用單獨的磁盤分與數據文件分開。

查看完整回答
反對 回復 2019-01-07
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

建議主要考慮80%常用到的查詢,剩余較少的查詢條件使用到的字段,先不要建立索引,試一下吧。

在制造企業中100W+的數據表是很常見的。但索引要建到20多個的就少見了,

如果真得需要,建議使用覆蓋索引。

查看完整回答
反對 回復 2019-01-07
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

@Home.Lu:

寫寫理由吧。

查看完整回答
反對 回復 2019-01-07
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

目前只考慮數據庫操作,程序的操作暫時不想動。

查看完整回答
反對 回復 2019-01-07
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

讀寫分離是好,可是擔心數據同步問題,這部分數據同步測試也不方便

查看完整回答
反對 回復 2019-01-07
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

硬件允許的話 用兩個數據庫 做讀寫分離 可以有效的緩解問題。

或者不一定非得在數據庫中解決所有問題吧 可以試試在程序中增加緩存層, ?查詢盡量在緩存中進行, 寫入則讓相應的緩存失效。

查看完整回答
反對 回復 2019-01-07
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

這種分表方式對有些需要查詢多個歷史期間記錄的查詢就不適用了。

查看完整回答
反對 回復 2019-01-07
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

有沒有看看什么是瓶頸?磁盤IO ?CPU耗時?? 最好在profile里面查看一下。

不知道你數據庫的硬件配置,從這個數據量來看,數據文件和索引文件都很大,可能IO是瓶頸,考慮一下這部分數據是否可以放SSD硬盤,再增加內存,能緩解IO瓶頸。? 這個是從硬件角度處理

還有,可以考慮調整某些字段。我的經驗,字符型字段比較耗性能。如果有些字段存的是字符,但是這些字符又是標準的選項,那可以考慮將這字段換為int型,指向標準選項的索引。這個是從軟件角度處理

再,你表的主鍵是啥類型?

查看完整回答
反對 回復 2019-01-07
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

個人認為最開始的數據架構就沒做好。
一個表放100W條數據,操作,查詢都訪問這個表肯定影響效率。最好是做分割。10W量級的為一個表(或者單獨的數據庫。)。那么100W數據就變成10個表來存儲了。另外單獨建立一個庫 這個庫只保存用戶最索引ID 如 userid ?tableid .通過這個目錄庫來決定用戶要訪問和操作的的表。就是分布式管理,我語言表達差,就是這個意思。什么緩存都是浮云,緩存需要消耗大量的硬件資源的。

查看完整回答
反對 回復 2019-01-07
?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

實時同步可以用SQLDependcy啊

查看完整回答
反對 回復 2019-01-07
?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

如果是報表的話把表按月,按季度設計。

用存儲過程創建表。

查看完整回答
反對 回復 2019-01-07
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

可不可以這樣 根據你數據 緩存一部分以前的數據 比如1年前的全部緩存 其他的再從數據庫取

查看完整回答
反對 回復 2019-01-07
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

說的很好跟我想的一樣,讀寫分離是一個不錯的方案,因為涉及到錢的問題,數據必須是實時的,實時同步又是新問題了。

查看完整回答
反對 回復 2019-01-07
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

讀寫分離,再就是做緩存

查看完整回答
反對 回復 2019-01-07
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

@tomcat1988: 如果只能優化查詢,不考慮其他的解決方案的話,這個問題沒有答案,只能叫他加硬件神馬的了。

查看完整回答
反對 回復 2019-01-07
首頁上一頁12下一頁尾頁
  • 30 回答
  • 0 關注
  • 932 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號