成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解如何做好數據庫的優化

數據庫
數據庫的優化是將性能低下的數據庫語句轉換成目的相同的性能優異的數據庫語句,數據庫的優化通常可以通過對網絡、硬件、操作系統、數據庫參數和應用程序的優化來進行,最常見的優化手段就是對硬件的升級。那么如何如何做好數據庫的優化呢?接下來為您詳細介紹。

 為了讓數據庫更好的為人民服務,當前至關重要的就是數據庫優化,只有優化了數據庫,使其性能提升,運用數據庫時才能方便快捷。目前web2.0的程序,很大瓶頸是數據庫的吞度量。不過,如何才能確定系統的瓶頸是數據庫呢,因為只有確定數據庫是整個系統的瓶頸,我們才有必要去優化他,畢竟,還有這么多需求等待我們去做。

如何確定數據庫是瓶頸?

  1 如果程序設計良好,有一個數據庫操作邏輯層,可以從這個層的統計數據看到每個請求花費的時間,如果平均時間已經不能讓你容忍的話,數據庫已經是瓶頸了。

  2 在數據庫的服務器上使用top命令,看看mysql服務器占用資源的情況,看看機子的平均負載。

  如果服務器的平均負載已經很高,mysql占用了塊100%的cpu資源,說明mysql服務器很忙了。

  3 在數據庫服務器上使用iostat命令,看看磁盤IO,如果block住的操作比較多的話,說明數據庫操作還是過于頻繁了,磁盤都響應不急了。

  4 建議打開mysql的慢查詢日志,這樣grep select看一下日志中的慢查詢的數量,如果數量較多,說明慢查詢的數量很多,需要進行調整了。

  5 如果有一天數據庫無法插入了,需要檢查一下數據庫表是不是過大了。32位的操作系統上一個表最大的容量是2^32這么大。不過還是建議增加一個數據庫操作的邏輯層,在數據庫操作的前后記錄下操作的時間,進行統計上報,利用監控程序來報警相關負責人,這樣可以及早的知道數據庫是瓶頸,提前做出優化。

 

知道數據庫是瓶頸了,如何來進行優化呢?

  1 我們第一個想到是看看數據庫的容量是不是太大了,如果數據庫表太大的話,索引文件也會比較大,每次的更新操作就會更加的費時。需要考慮進行分庫和分表了。

  分庫分表按照一定的規則來對數據庫中的記錄進行分區來存儲,一方面可以做到一定的負載均衡,將請求平分下來,每個區段去獨自承受;另一方面,分庫分表可以使我們存儲和操作更多的數據。

  不過分庫分表需要多之前基于單庫的程序進行修改,存在一定的風險,因此,在程序設計之初就應該考慮到分庫分表的需要,最好是將數據庫操作層獨立出來,便于擴展和更改。

  2 如果數據庫表不是很大,但是查詢慢的話,我們需要檢查一下我們的sql查詢語句,利用mysql的explain語句看看是不是使用了索引,如果沒有使用索引,那我們需要在相應的字段上建上索引,反復的使用explain,尋找到個一個合適的索引。

  在建索引時需要考慮:

  1)數據庫的索引要做到越少越好:因為每次更新都需要更新索引,索引過多就會降低寫入的速度

  2)最窄的字段放在鍵的左邊:這樣提高了索引中每一個點的基數,帶來更好的索引讀寫性能

  3)盡量避免file sort排序、臨時表和表掃描:對于大表,全表掃描會導致大量的磁盤IO的操作,會導致操作非常的緩慢

  4)對于大表,盡量不要將索引建在字符串類型的列上,字符串的匹配是很費時的,需要付出很高的性能代價,如果一定有必要,建議對字符串列進行hash后取一個整形的值來進行索引。

  3 如果更新操作有點慢,而讀操作的響應要求不需要很及時的話,可以考慮利用mysql的主從熱備來分擔讀寫的壓力。

  畢竟對數據庫的操作,寫少讀多。因此,我們將對數據庫的寫操作放到mysql的主服務器上,利用mysql的熱備,我們在備份的數據庫服務器上進行讀操作,由于可以有多個熱備mysql,于是可以將讀操作分布在多個熱備上面,從而將讀操作均衡開來,提高讀操作的性能。

  4 緩存的使用

  緩存是一切后臺程序的根本,因為80%的請求是對應20%的數據,我們只需要少量的內存將20%的數據緩存起來,就可以大大的滿足我們系統需求,何樂而不為呢。

  1)mysql設置中盡量增加key cache,thread cache、查詢的cache

  2)在應用程序層增加一個memcached這樣的通用cache

  3)對于少量數據,但是操作頻繁的表使用mysql提供的內存heap表,可以獲得極高的寫入和讀取速度

  5 數據庫的設計上進行優化

  對于傳統的數據庫設計我們講究建模范式,避免數據的冗余從而導致臟數據。然而在我們實際的應用中需要根據情況來使用第三范式的一些規則,對于一些頻繁需要在多個地方出現的數據,如同一個論壇這種用戶和主題以及回復等有關聯的應用中,如果我們將用戶同主題和回復分開來存儲,每次查詢一下一篇文章或者一個回復的情況都需要對用戶表和主題表或者回復表進行聯查,如果數據量小的話,這樣聯查的性能還是可以接受的,如果表大一點,上了3、4十萬以上的數據,聯查的速度就會比較慢了。

  該范式化的地方需要進行范式化,但是還是需要根據情況來設計我們的表,從而達到性能和良好設計的折中。

  其它的話:

  1 對于數據庫的操作建議分層處理,至少分為兩層,一層是數據庫操作的邏輯層,一層是數據庫的cache層。

  從一開始就考慮如此,可以很方便在未來對數據庫進行劃分部署、分庫分表擴展

  2 增加mysql的監控,監控mysql的慢查詢日志,監控mysql的請求情況

  3 根據自己的需要來選擇mysql的存儲引擎

  myisam有較高的讀寫速度,但是由于表鎖定,不能同時進行快速的讀和寫。

  innodb支持事務,提供了行級的鎖,但是為了使用事務,表空間會比較大,而且不支持全文索引

  heap將表放到內存中,適合與表小而需要頻繁操作的情況,如用戶信息,其讀寫很快,但是不是持久的,需要自己來寫工具讓其持久

  4 mysql服務器的一些狀態檢測的命令

  show slave status:可以看到主從同步的情況

  show [full] processlist:可以看到mysql服務器的請求情況,如果發現lock情況很多,需要注意了

  show status:可以看到mysql服務器的各種請求情況。

以上主要講解了確定數據庫是瓶頸、如何來進行優化兩大問題,通過上面的學習,相信數據庫優化問題已經難不倒您啦。

【編輯推薦】

  1. DB2數據庫優化的6種技巧
  2. DB2數據庫優化 基本策略少不了
  3. MySQL數據庫優化SQL的三個方法
  4. 大型Oracle數據庫優化的9個具體方案
  5. Oracle10g數據庫優化的實用的經驗總結
責任編輯:迎迎 來源: 天極網
相關推薦

2015-04-13 16:00:24

數據庫選型關系型數據庫NoSQL

2023-08-30 11:50:28

2021-08-30 10:08:50

大數據數據安全數據防泄漏

2018-12-21 08:33:15

數據中心機房運維

2024-01-03 15:03:38

數據中心數字化機房防火

2015-09-22 10:36:09

數據面試工作

2020-12-14 18:51:21

數據庫海量數據

2017-09-18 09:48:39

數據中心割接工作

2020-02-05 14:49:04

網絡性能優化微調

2014-10-30 10:53:22

Android內存優化

2019-12-12 14:09:10

數據可視化設計界面

2013-11-29 14:30:56

數據分析數據挖掘數據負載

2022-07-25 08:02:57

Tomcat調優組件

2011-06-03 17:35:04

SEO

2017-04-14 09:23:19

2022-09-26 14:08:27

數據安全瑞數信息

2019-04-29 09:52:46

容器安全漏洞網絡安全

2012-12-20 16:20:38

災難恢復數據保護

2011-05-26 16:27:24

SEO

2020-07-22 07:00:00

微服務架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级在线观看 | 国产自产c区 | 激情一区二区三区 | 玖玖操 | 国产视频1区 | 久久国产成人午夜av影院武则天 | 久久精品99| 超碰国产在线 | 亚洲一区亚洲二区 | 中文字幕一区在线观看视频 | 性高朝久久久久久久3小时 av一区二区三区四区 | 日韩精品激情 | 99热国产免费| 日韩一区二区三区在线 | 久草在线 | 日日夜夜影院 | 天天操网| av中文字幕在线 | 精品久 | 久久久免费少妇高潮毛片 | 婷婷在线视频 | 欧美一级黄色片免费观看 | 欧美色999| 欧美 中文字幕 | 日本视频中文字幕 | 亚洲精品免费在线 | 天天拍天天射 | 国产成人99久久亚洲综合精品 | 91久久久久久 | 成人做爰www免费看视频网站 | a级免费观看视频 | 欧美一级一区 | 在线一区 | 狠狠操你| 免费a级毛片在线播放 | 狠狠色狠狠色综合日日92 | 日本成人午夜影院 | 亚洲视频中文字幕 | 国产精品久久久久久久久免费桃花 | 久久精品国产免费一区二区三区 | 91精品国产91久久久久久丝袜 |