怎樣優化「mysql資料庫」來提高「mysql效能」

時間 2021-05-06 00:03:21

1樓:小牛騎馬追火箭

優化「mysql資料庫」來提高「mysql效能」的方法有:

1、選取最適用的字段屬性。

mysql可以很好的支援大資料量的訪問,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在建立表的時候,為了獲得更好的效能,我們可以將表中字段的寬度設得盡可能小。

2、使用連線(join)來代替子查詢(sub-queries)。

mysql從4.1開始支援sql的子查詢。這個技術可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另乙個查詢中。

3、使用聯合(union)來代替手動建立的臨時表。

mysql 從4.0的版本開始支援union查詢,它可以把需要使用臨時表的兩條或更多的select查詢合併的乙個查詢中。在客戶端的查詢會話結束的時候,臨時表會被自動刪除,從而保證資料庫整齊、高效。

4、事務。

要把某個資料同時插入兩個相關聯的表中,可能會出現這樣的情況:第乙個表中成功更新後,資料庫突然出現意外狀況,造成第二個表中的操作沒有完成,這樣,就會造成資料的不完整,甚至會破壞資料庫中的資料。要避免這種情況,就應該使用事務,它的作用是:

要麼語句塊中每條語句都操作成功,要麼都失敗。

5、鎖定表。

儘管事務是維護資料庫完整性的乙個非常好的方法,但卻因為它的獨占性,有時會影響資料庫的效能,尤其是在很大的應用系統中。由於在事務執行的過程中,資料庫將會被鎖定,因此其它的使用者請求只能暫時等待直到該事務結束。

6、使用外來鍵。

鎖定表的方法可以維護資料的完整性,但是它卻不能保證資料的關聯性。這個時候我們就可以使用外來鍵。

7、使用索引

索引是提高資料庫效能的常用方法,它可以令資料庫伺服器以比沒有索引快得多的速度檢索特定的行,尤其是在查詢語句當中包含有max(), min()和orderby這些命令的時候,效能提高更為明顯。

8、優化的查詢語句

絕大多數情況下,使用索引可以提高查詢的速度,但如果sql語句使用不恰當的話,索引將無法發揮它應有的作用。

mysql資料庫有100萬+資料,查詢起來很慢了,如何優化

2樓:

你好,你可以根據條件去新增索引,例如:

一、所有mysql索引列型別都可以被索引,對來相關類使用索引可以提高select查詢效能,根據mysql索引數,可以是最大索引與最小索引,每種儲存引擎對每個表的至少支援16的索引。總索引長度為256位元組。

mysim和innodb儲存引擎的表預設建立索引都是btree索引,目前mysql還不支援函式索引,但支援前緣索引,對字段前n個字元建立索引

二、mysql建立索引語法

create [unioun|fulltext|spatial] index indexname[using indextype] on tablename( tablenamecol)

index_col_name:

col_name[ (length)][asc |desc]

如果你建立索引時搞錯了,需要修改mysql索引我們可以用alert來修改索引,語法與create index建立索引差不多,我們就不說了,可以檢視相關手冊。

下面我們來看乙個關於mysql建立索引例項教程。

mysql>create index cityname on city(city(2));

query ok,600 rows affected (0.26 sec)

records :600 duplicates:0 warings 0:

我們現在來以city為條件進行查詢,如下面。

->explain select * from city where city ='www.111cn.net' g

id:1

......

possible_keys:cityname

key:cityname

好了,現在我們來看看mysql刪除索引等例項

drop indexname on tablename

例項,我現在要刪除剛才建立city索引

>drop index cityname on city;

query ok, .....

不過通常對百萬級資料的查詢或者其他操作,都改換其他的大型的資料庫了,希望能幫到你,望採納。

怎麼實現 mysql資料庫效能優化? 舉例說明

3樓:韶淑敏學鶯

在mysql安裝目錄下,比如:

d:\program

files\mysql\mysql

server

5.1裡面有幾個配置檔案,只要修改名字成為my.ini

即可,比如:

my-huge.ini

巨型伺服器

my-large.ini

大型my-medium.ini

中型my-small.ini

小型備份原來的,並重命名,重新啟動即可。其中,[mysqld]這一節是mysql伺服器的配置資訊。

怎麼實現 mysql資料庫效能優化? 舉例說明

4樓:匿名使用者

在mysql安裝目錄下,比如: d:\program files\mysql\mysql server 5.1

裡面有幾個配置檔案,只要修改名字成為 my.ini 即可,比如:

my-huge.ini 巨型伺服器

my-large.ini 大型

my-medium.ini 中型

my-small.ini 小型

備份原來的,並重命名,重新啟動即可。其中,[mysqld] 這一節是mysql伺服器的配置資訊。

5樓:匿名使用者

修改引數檔案,比如linux下修改my.cnf或者windows下的my.ini,增加分配的記憶體或者最大會話上限

6樓:蝌蚪胖胖

效能優化?什麼意思啊 優化是不是把不用的 占用空間的資料刪掉啊?

資料庫如何優化

7樓:幸吹剛梓瑤

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

8樓:百度文庫精選

內容來自使用者:許成文

資料庫優化的目的:避免磁碟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

9樓:愛可生雲資料庫

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

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

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

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

mysql資料庫怎樣建立表,MYsql資料庫怎樣建立表? 20

歐覓潘安然 比如要建立學生表表名為student,學生表有欄位學號 no 年齡 age create table student no int primary key 主鍵 age int 執行下就建立好了 隨便舉的例子,明白吧?謝謝採納! create database cookbook 建立一個...

mysql資料庫和oracle資料庫的區別

1 體積不同。oracle它體積比較龐大,一般是用來開發大型應用 例如分布式 的。而mysql的體積相對來說比較小,較之oracle更容易安裝 維護以及管理,操作也簡單,最重要的是它是三個中唯一乙個開源資料庫,但目前也屬於oracle公司的產品了。2 容量不同。oracle容量無限,根據配置決定 而...

MySQL資料庫千萬級資料處理,MySQL資料庫千萬級資料處理? 5

方法有三種 1,delete from a where a.欄位 not in select b.欄位 from b 2,delete from a where not exists select 1 from b where a.欄位 b.欄位 3,create table a tmp selec...