不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦——學(xué)設(shè)計(jì)>網(wǎng)頁設(shè)計(jì)>網(wǎng)站建設(shè)>網(wǎng)站服務(wù)器管理>

優(yōu)化數(shù)據(jù)庫需要什么性能方法_優(yōu)化數(shù)據(jù)庫性能有哪些方法

時(shí)間: 宇民40 分享

  在Web應(yīng)用程序體系架構(gòu)中,數(shù)據(jù)持久層是關(guān)鍵的核心部分,它對系統(tǒng)的性能有非常重要的影響。下面由學(xué)習(xí)啦小編為大家整理的優(yōu)化數(shù)據(jù)庫性能的方法,希望大家喜歡!

  優(yōu)化數(shù)據(jù)庫性能的方法

  1.表進(jìn)行水平劃分

  如果一個(gè)表的記錄數(shù)太多了,比如上千萬條,而且需要經(jīng)常檢索,那么我們就有必要化整為零了。如果我拆成100個(gè)表,那么每個(gè)表只有10萬條記錄。當(dāng)然這需要數(shù)據(jù)在邏輯上可以劃分。一個(gè)好的劃分依據(jù),有利于程序的簡單實(shí)現(xiàn),也可以充分利用水平分表的優(yōu)勢。比如系統(tǒng)界面上只提供按月查詢的功能,那么把表按月拆分成12個(gè),每個(gè)查詢只查詢一個(gè)表就夠了。如果非要按照地域來分,即使把表拆的再小,查詢還是要聯(lián)合所有表來查,還不如不拆了。所以一個(gè)好的拆分依據(jù)是 最重要的。

  2.對表進(jìn)行垂直劃分

  有些表記錄數(shù)并不多,可能也就2、3萬條,但是字段卻很長,表占用空間很大,檢索表時(shí)需要執(zhí)行大量I/O,嚴(yán)重降低了性能。這個(gè)時(shí)候需要把大的字段拆分到另一個(gè)表,并且該表與原表是一對一的關(guān)系。

  3.選擇適當(dāng)?shù)淖侄晤愋?,特別是主鍵

  選擇字段的一般原則是保小不保大,能用占用字節(jié)小的字段就不用大字段。比如主鍵, 建議使用自增類型,這樣省空間,空間就是效率!按4個(gè)字節(jié)和按32個(gè)字節(jié)定位一條記錄,誰快誰慢太明顯了。涉及到幾個(gè)表做join時(shí),效果就更明顯了。

  4.數(shù)據(jù)庫參數(shù)配置

  最重要的參數(shù)就是內(nèi)存,我們主要用的innodb引擎,所以下面兩個(gè)參數(shù)調(diào)的很大

  innodb_additional_mem_pool_size = 64Minnodb_buffer_pool_size =1G

  對于myisam,需要調(diào)整key_buffer_size,當(dāng)然調(diào)整參數(shù)還是要看狀態(tài),用show status語句可以看到當(dāng)前狀態(tài),以決定改調(diào)整哪些參數(shù)

  在my.ini修改端口3306,默認(rèn)存儲(chǔ)引擎和最大連接數(shù)

  在my.ini中.port=3306 [有兩個(gè)地方修改]default-storage-engine=INNODB max_connections=100

  5.合理的硬件資源和操作系統(tǒng)

  如果你的機(jī)器內(nèi)存超過4G,那么毋庸置疑應(yīng)當(dāng)采用64位操作系統(tǒng)和64位mysql 5.5.19 or mysql5.6

  6.讀寫分離

  如果數(shù)據(jù)庫壓力很大,一臺(tái)機(jī)器支撐不了,那么可以用mysql復(fù)制實(shí)現(xiàn)多臺(tái)機(jī)器同步,將數(shù)據(jù)庫的壓力分散。

  mysql優(yōu)化插入記錄的方法

  一. 對于MyISAM引擎表常見的優(yōu)化方法如下:

  1. 禁用索引。對于非空表插入記錄時(shí),MySQL會(huì)根據(jù)表的索引對插入記錄建立索引。如果插入大量數(shù)據(jù),建立索引會(huì)降低插入記錄的速度。為了解決這種情況可以在插入記錄之前禁用索引,數(shù)據(jù)插入完畢后在開啟索引。禁用索引的語句為: ALTER TABLE tb_name DISABLE KEYS; 重新開啟索引的語句為: ALTER TABLE table_name ENABLE KEYS; 對于空表批量導(dǎo)入數(shù)據(jù),則不需要進(jìn)行此操作,因?yàn)镸yISAM引擎的表是在導(dǎo)入數(shù)據(jù)之后才建立索引的。

  2. 禁用唯一性檢查:數(shù)據(jù)插入時(shí),MySQL會(huì)對插入的記錄進(jìn)行唯一性校驗(yàn)。這種唯一性校驗(yàn)也會(huì)降低插入記錄的速度。為了降低這種情況對查詢速度的影響,可以在插入記錄之前禁用唯一性檢查,等到記錄插入完畢之后再開啟。禁用唯一性檢查的語句為: SET UNIQUE_CHECKS=0; 開啟唯一性檢查的語句為: SET UNIQUE_CHECKS=1;

  3. 使用批量插入。使用一條INSERT語句插入多條記錄。如 INSERT INTO table_name VALUES(....),(....),(....)

  4. 使用LOAD DATA INFILE批量導(dǎo)入當(dāng)需要批量導(dǎo)入數(shù)據(jù)時(shí),使用LOAD DATA INFILE語句導(dǎo)入數(shù)據(jù)的速度比INSERT語句快。

  二. 對于InnoDB引擎的表,常見的優(yōu)化方法如下:

  1. 禁用唯一性檢查。同MyISAM引擎相同,通過 SET UNIQUE_CHECKS=0; 導(dǎo)入數(shù)據(jù)之后將該值置1。

  2. 禁用外鍵檢查。插入數(shù)據(jù)之前執(zhí)行禁止對外鍵的查詢,數(shù)據(jù)插入完成之后再恢復(fù)對外鍵的檢查。禁用外鍵檢查語句為: SET FOREIGN_KEY_CHECKS=0; 恢復(fù)對外鍵的檢查語句為: SET FOREIGN_KEY_CHECKS=1;

  3. 禁止自動(dòng)提交。插入數(shù)據(jù)之前禁止事務(wù)的自動(dòng)提交,數(shù)據(jù)導(dǎo)入完成之后,執(zhí)行恢復(fù)自動(dòng)提交操作。禁止自動(dòng)提交語句為: SET AUTOCOMMIT=0; 恢復(fù)自動(dòng)提交只需將該值置1。

  Mysql命令是什么

  1、連接Mysql

  格式: mysql -h主機(jī)地址 -u用戶名 -p用戶密碼

  1、連接到本機(jī)上的MYSQL。

  首先打開DOS窗口,然后進(jìn)入目錄mysql\bin,再鍵入命令mysql -u root -p,回車后提示你輸密碼.注意用戶名前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼。

  如果剛安裝好MYSQL,超級用戶root是沒有密碼的,故直接回車即可進(jìn)入到MYSQL中了,MYSQL的提示符是: mysql>

  2、連接到遠(yuǎn)程主機(jī)上的MYSQL。假設(shè)遠(yuǎn)程主機(jī)的IP為:110.110.110.110,用戶名為root,密碼為abcd123。則鍵入以下命令:

  mysql -h110.110.110.110 -u root -p 123;(注:u與root之間可以不用加空格,其它也一樣)

  3、退出MYSQL命令: exit (回車)

  2、修改密碼

  格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼

  1、給root加個(gè)密碼ab12。

  首先在DOS下進(jìn)入目錄mysql\bin,然后鍵入以下命令

  mysqladmin -u root -password ab12

  注:因?yàn)殚_始時(shí)root沒有密碼,所以-p舊密碼一項(xiàng)就可以省略了。

  2、再將root的密碼改為djg345。

  mysqladmin -u root -p ab12 password djg345

  3、增加新用戶

  注意:和上面不同,下面的因?yàn)槭荕YSQL環(huán)境中的命令,所以后面都帶一個(gè)分號作為命令結(jié)束符

  格式:grant select on 數(shù)據(jù)庫.* to 用戶名@登錄主機(jī) identified by “密碼”

  1、增加一個(gè)用戶test1密碼為abc,讓他可以在任何主機(jī)上登錄,并對所有數(shù)據(jù)庫有查詢、插入、修改、刪除的權(quán)限。首先用root用戶連入MYSQL,然后鍵入以下命令:

  grant select,insert,update,delete on *.* to [email=test1@”%]test1@”%[/email]” Identified by “abc”;

  但增加的用戶是十分危險(xiǎn)的,你想如某個(gè)人知道test1的密碼,那么他就可以在internet上的任何一臺(tái)電腦上登錄你的mysql數(shù)據(jù)庫并對你的數(shù)據(jù)可以為所欲為了,解決辦法見2。

  2、增加一個(gè)用戶test2密碼為abc,讓他只可以在localhost上登錄,并可以對數(shù)據(jù)庫mydb進(jìn)行查詢、插入、修改、刪除的操作(localhost指本地主機(jī),即MYSQL數(shù)據(jù)庫所在的那臺(tái)主機(jī)),這樣用戶即使用知道test2的密碼,他也無法從internet上直接訪問數(shù)據(jù)庫,只能通過MYSQL主機(jī)上的web頁來訪問了。

  grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;

  如果你不想test2有密碼,可以再打一個(gè)命令將密碼消掉。

  grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;

優(yōu)化數(shù)據(jù)庫需要什么性能方法_優(yōu)化數(shù)據(jù)庫性能有哪些方法

在Web應(yīng)用程序體系架構(gòu)中,數(shù)據(jù)持久層是關(guān)鍵的核心部分,它對系統(tǒng)的性能有非常重要的影響。下面由學(xué)習(xí)啦小編為大家整理的優(yōu)化數(shù)據(jù)庫性能的方法,希望大家喜歡! 優(yōu)化數(shù)據(jù)庫性能的方法 1.表進(jìn)行水平劃分 如果一個(gè)表的記錄數(shù)太多了,比如上千萬條,而且需要經(jīng)常
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

26885