資料庫如何優化,資料庫效能優化有哪些措施

時間 2021-05-07 20:01:23

1樓:幸吹剛梓瑤

body

如何優化mysql資料庫

當mysql資料庫邂逅優化,它有好幾個意思,今天我們所指的是效能優化。

我們究竟該如何對mysql資料庫進行優化呢?下面我就從mysql對硬體的選擇、mysql的安裝、my.cnf的優化、mysql如何進行架構設計及資料切分等方面來說明這個問題。

1.伺服器物理硬體的優化

1)磁碟(i/o),mysql每一秒鐘都在進行大量、複雜的查詢操作,對磁碟的讀寫量可想而知,所以推薦使用raid1+0磁碟陣列,如果資金允許,可以選擇固態硬碟做raid1+0;

2)cpu對mysql的影響也是不容忽視的,建議選擇運算能力強悍的cpu。

2.mysql應該採用編譯安裝的方式

mysql資料庫的線上環境安裝,我建議採取編譯安裝,這樣效能會較大的提升。

3.mysql配置檔案的優化

1)skip

-name

-resolve,禁止mysql對外部連線進行dns解析,使用這一選項可以消除mysql進行dns解析的時間;

2)back_log

=384,back_log指出在mysql暫時停止響應新請求之前,短時間內的多少個請求可以被存在堆疊中,對於linux系統而言,推薦設定小於512的整數。

3)如果key_reads太大,則應該把my.cnf中key_buffer_size變大,保持key_reads/key_read_requests至少在1/100以上,越小越好。

4.mysql上線後根據status狀態進行適當優化

1)開啟慢查詢日誌可能會對系統效能有一點點影響,如果你的mysql是主-從結構,可以考慮開啟其中一臺從伺服器的慢查詢日誌,這樣既可以監控慢查詢,對系統效能影響也會很小。

2)mysql伺服器過去的最大連線數是245,沒有達到伺服器連線數的上限256,應該不會出現1040錯誤。比較理想的設定是:max_used_connections/max_connections

*100%

=85%

5.mysql資料庫的可擴充套件架構方案

1)mysql

cluster,其特點為可用性非常高,效能非常好,但它的維護非常複雜,存在部分bug;

2)drbd磁碟網路映象方案,其特點為軟體功能強大,資料可在底層塊裝置級別跨物理主機映象,且可根據效能和可靠性要求配置不同級別的同步。

2樓:百度文庫精選

內容來自使用者:許成文

資料庫優化的目的:避免磁碟i/o瓶頸、減少cpu利用率和減少資源競爭。

資料庫的優化包括物理上的優化,如良好的平臺(硬體平臺、網路平臺),合理的環境引數(作業系統環境引數、oracle環境引數),及軟體上的優化。

1、資料庫結構的設計

1、資料庫的邏輯設計、包括表與表之間的關係是優化關係型資料庫效能的核心。一個好的邏輯資料庫設計可以為優化資料庫和應用程式打下良好的基礎。

標準化的資料庫邏輯設計包括用多的、有相互關係的窄表來代替很多列的長資料表。下面是一些使用標準化表的一些好處。

a:由於表窄,因此可以使排序和建立索引更為迅速

b:由於多表,所以多鏃的索引成為可能

c:更窄更緊湊的索引

d:每個表中可以有少一些的索引,因此可以提高insert update delete等的速度,因為這些操作在索引多的情況下會對系統效能產生很大的影響

e:更少的空值和更少的多餘值,增加了資料庫的緊湊性

由於標準化,所以會增加了在獲取資料時引用表的數目和其間的連線關係的複雜性。太多的表和複雜的連線關係會降低伺服器的效能,因此在這兩者之間需要綜合考慮。定義具有相關關係的主鍵和外來鍵時應該注意的事項主要是:

用於連線多表的主鍵和參考的鍵要有相同的資料型別。(對於多列索引,10、from hr.employees e where last_name like :

b1;from employees e

3樓:愛可生雲資料庫

mrr 是 mysql 針對特定查詢的一種優化手段。假設一個查詢有二級索引可用,讀完二級索引後要回表才能查到那些不在當前二級索引上的列值,由於二級索引上引用的主鍵值不一定是有序的,因此就有可能造成大量的隨機 io,如果回表前把主鍵值給它排一下序,那麼在回表的時候就可以用順序 io 取代原本的隨機 io。

如果想關閉 mrr 優化的話,就要把優化器開關 mrr 設定為 off。

預設只有在優化器認為 mrr 可以帶來優化的情況下才會走 mrr,如果你想不管什麼時候能走 mrr 的都走 mrr 的話,你要把 mrr_cost_based 設定為 off,不過最好不要這麼幹,因為這確實是一個坑,mrr 不一定什麼時候都好,全表掃描有時候會更加快,如果在這種場景下走 mrr 就完成了。

mrr 要把主鍵排個序,這樣之後對磁碟的操作就是由順序讀代替之前的隨機讀。從資源的使用情況上來看就是讓 cpu 和記憶體多做點事,來換磁碟的順序讀。然而排序是需要記憶體的,這塊記憶體的大小就由引數 read_rnd_buffer_size 來控制。

資料庫效能優化有哪些措施?

4樓:沒錯名字七個字

優化措施如下:

1、調整資料結構的設計

這一部分在開發資訊系統之前完成,程式設計師需要考慮是否使用oracle資料庫的分割槽功能,對於經常訪問的資料庫表是否需要建立索引等。

2、調整應用程式結構設計

這一部分也是在開發資訊系統之前完成,程式設計師在這一步需要考慮應用程式使用什麼樣的體系結構,是使用傳統的client/server兩層體系結構,還是使用browser/web/database的三層體系結構。不同的應用程式體系結構要求的資料庫資源是不同的。

3、調整資料庫sql語句

應用程式的執行最終將歸結為資料庫中的sql語句執行,因此sql語句的執行效率最終決定了oracle資料庫的效能。oracle公司推薦使用oracle語句優化器(oracle optimizer)和行鎖管理器(row-level manager)來調整優化sql語句。

4、調整伺服器記憶體分配

記憶體分配是在資訊系統執行過程中優化配置的,資料庫管理員可以根據資料庫執行狀況調整資料庫系統全域性區(sga區)的資料緩衝區、日誌緩衝區和共享池的大小;還可以調整程式全域性區(pga區)的大小。需要注意的是,sga區不是越大越好,sga區過大會佔用作業系統使用的記憶體而引起虛擬記憶體的頁面交換,這樣反而會降低系統。

5、調整硬碟i/o

這一步是在資訊系統開發之前完成的。資料庫管理員可以將組成同一個表空間的資料檔案放在不同的硬碟上,做到硬碟之間i/o負載均衡。

6、調整作業系統引數

例如:執行在unix作業系統上的oracle資料庫,可以調整unix資料緩衝池的大小,每個程序所能使用的記憶體大小等引數。

如何進行sql效能優化

5樓:life布可

進行sql效能優化的方法:

1、sql語句不要寫的太複雜。一個sql語句要儘量簡單,不要巢狀太多層。

2、使用『臨時表』快取中間結果。簡化sql語句的重要方法就是採用臨時表暫存中間結果,這樣可以避免程式中多次掃描主表,也大大減少了阻塞,提高了併發效能。

4、儘量避免使用!=或<>操作符。在where語句中使用!=或<>,引擎將放棄使用索引而進行全表掃描。

5、儘量避免使用 or 來連線條件;在 where 子句中使用 or 來連線條件,引擎將放棄使用索引而進行全表掃描。可以使用

select id from t where num=10

union all

select id from t where num=20

替代select id from t where num=10 or num=20

6、儘量避免使用in和not in:在 where 子句中使用 in和not in,引擎將放棄使用索引而進行全表掃描。可以使用

select id from t where num between 10 and 20

替代select id from t where num in (10,20)

7、可以考慮強制查詢使用索引

select * from table force index(pri) limit 2;(強制使用主鍵)

select * from table force index(hollis_index) limit 2;(強制使用索引"hollis_index")

select * from table force index(pri,hollis_index) limit 2;(強制使用索引"pri和hollis_index")

8、儘量避免使用表示式、函式等操作作為查詢條件;儘量避免大事務操作,提高系統併發能力。儘量避免使用遊標;任何地方都不要使用 select * from t ,用具體的欄位列表代替「*」,不要返回用不到的任何欄位。

9、儘可能的使用 varchar/nvarchar 代替 char/nchar。儘量使用數字型欄位,若只含數值資訊的欄位儘量不要設計為字元型,這會降低查詢和連線的效能,並會增加儲存開銷。

10、索引並不是越多越好,索引固然可以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率、並不是所有索引對查詢都有效,sql是根據表中資料來進行查詢優化的,當索引列有大量資料重複時,sql查詢可能不會去利用索引。

資料庫效能優化主要包括哪些方面?

包括網路 硬體 作業系統 資料庫引數和應用程式。資料庫的優化通常可以通過對網路 硬體 作業系統 資料庫引數和應用程式的優化來進行。最常見的優化手段就是對硬體的升級。根據統計,對網路 硬體 作業系統 資料庫引數進行優化所獲得的效能提升,全部加起來只佔資料庫系統效能提升的40 左右,其餘的60 系統效能...

資料庫常用函式,常用資料庫有哪些?

大野瘦子 1 系統資訊函式 系統資訊函式用來查詢mysql資料庫的系統資訊。函式 select version 5.0.67 community nt connection id 返回伺服器的連線數 database schema 返回當前資料庫名 user system user 返回當前使用者 ...

用sql資料庫如何檢視資料庫的使用者

四舍 入 select from tablename tablename是資料庫中註冊使用者表。查詢具體的欄位 select column name,column name from tablename 例子 獲取名為 lastname 和 firstname 的列的內容 從名為 persons 的...