資料庫訪問速度
900gb每秒。實時資料庫訪問速度為900gb每秒,資料庫專業的來說,其實就是一種電子的倉庫,是專門儲存數據和管理管理數據的一種處所,用戶可以對資料庫中的數據進行新增和更新或者刪除等操作。
② 濡備綍瑙e喅灞鍩熺綉鍐卪ysql鏁版嵁搴撹繛鎺ユ參_MySQL
閫氳繃鍐呯綉榪炲彟澶栦竴鍙版満鍣ㄧ殑mysql鏈嶅姟錛 紜鍙戠幇閫熷害N鎱錛 絳変簡澶х害鍑犲嶮縐掓墠絳夊埌鎻愮ず杈撳叆瀵嗙爜銆 浣嗘槸ping mysql鎵鍦ㄦ湇鍔″櫒鍗村緢蹇錛 鎯沖埌寰堜箙涔嬪墠鏈夎繃綾諱技鐨勭粡楠岋紝 telnet絳変竴浜涙湇鍔″湪榪炴帴璇鋒眰鐨勬椂鍊欙紝浼氬仛涓浜涘弽鍚戝煙鍚嶈В鏋愶紙濡傛灉鍙嶅悜瑙f瀽涓嶉『鐣咃紝 浼拌″氨浼氬歡榪熷緢澶氾紝 緇欎漢鐨勬劅瑙夋槸榪炴帴閫熷害N鎱錛侊級
鍦ㄧ綉涓婃悳緔浜嗕笅瑙e喅鍔炴硶錛 鍙戠幇鏈変袱縐嶏細
涓. 涓よ竟鏈哄櫒閰嶇疆鐨剅esolve.conf涓嶄竴鏍鳳紝 鎶妑esolve.conf閰嶇疆鎴愰熷害姣旇緝蹇鐨凞NS灝監K
浜. 鎶妋ysql閰嶇疆涓鐨凞NS鍙嶅悜瑙f瀽鍏蟲帀錛 涔烵K
鎴戠敤鐨勬槸絎涓縐嶅姙娉曪紝 淇鏀箁esolve.conf閰嶇疆鍚庯紝 閫熷害灝變笂鏉ヤ簡錛
闄勪竴錛 鎽樿嚜http://gcoder.blogbus.com/logs/31907502.html
涓ゅ彴鍦ㄥ悓涓緗戞電殑鏈哄櫒, 榪炴帴鍚屼竴涓鏁版嵁搴撴湇鍔″櫒, 涓鍙扮殑閫熷害鏄鍙︿竴鍙扮殑100鍊, 鏁版嵁搴撲富鏈烘槸鍩熷悕琛ㄧず鐨. 鎬庝箞閮芥兂涓嶆槑鐧?
鍚庢潵鏌ョ湅涓ゅ彴鏈哄櫒鐨 /etc/resolv.conf, 鍙戠幇閰嶇疆涓嶄竴鏍, 鏀規垚閫熷害蹇鐨勯偅鍙版満鍣ㄧ殑閰嶇疆, 閫熷害閭d笂灝變笂鏉ヤ簡.
鍩熷悕瑙f瀽涔熷彲浠ュ艱嚧緗戠粶紼嬪簭鎱, 鍙堜竴鏀惰幏. 鍙﹀, mysql榪樻湁DNS鍙嶅悜瑙f瀽鐨勯棶棰, 涔熷彲鑳藉艱嚧閫熷害鎱, 鍙浠ュ湪mysql鐨勯厤緗鏂囦歡涓, 鎶奃NS鍙嶅悜瑙f瀽鍏蟲帀.
闄勪簩錛 鎽樿嚜
褰撹繙紼嬭塊棶mysql鏃訛紝mysql浼氳В鏋愬煙鍚嶏紝浼氬艱嚧璁塊棶閫熷害寰堟參錛屽姞涓婁笅闈㈣繖涓閰嶇疆鍙瑙e喅姝ら棶棰
# 紱佹mysql鍋氬煙鍚嶈В鏋
[mysqld]
skip-name-resolve
php榪滅▼榪炴帴MYSQL閫熷害鎱,鏈夋椂榪滅▼榪炴帴鍒癕YSQL鐢ㄦ椂4-20縐掍笉絳,鏈鍦拌繛鎺MYSQL姝e父,鍑虹幇榪欑嶉棶棰樼殑涓昏佸師鍥犳槸,榛樿ゅ畨瑁呯殑MYSQL寮鍚浜咲NS鐨勫弽鍚戣В鏋,鍦∕Y.INI(WINDOWS緋葷粺涓)鎴朚Y.CNF(UNIX鎴朙INUX緋葷粺涓)鏂囦歡鐨刐mysqld]涓嬪姞鍏skip-name-resolve榪欎竴鍙ャ
浣嗘槸錛岃繖鏍蜂細寮曡搗涓涓闂棰橈細榪炴帴mysql鏃訛紝涓嶈兘浣跨敤 localhost榪炴帴浜嗭紝鑰屾槸瑕佷嬌鐢↖P鍦板潃鐨勶紱濡傛灉鏄鎸塴ocalhost瀵圭敤鎴瘋祴鏉冮檺鐨勮瘽錛岀敤鎴風櫥褰曟潈闄愪篃瑕佷慨鏀逛竴涓嬬殑銆
榪炴帴mysql閫熷害鎱㈢殑瑙e喅鏂規硶.
2鍙版湇鍔″櫒錛屼竴鍙拌窇iis+php錛屼竴鍙拌窇mysql錛屽拰浠ュ線涓鏍烽厤緗濂界幆澧冿紝嫻嬭瘯欏甸潰涓鍒嘜K
璺戝簲鐢ㄧ殑鏃跺欏彂鐜皃hp璁塊棶mysql閫熷害寰堟參錛岃繖縐嶆儏鍐靛湪浠ュ墠浠庢湭鍙戠幇榪囷紝鉶界劧2鍙版湇鍔″櫒騫墮潪鍦ㄥ悓涓緗戞典腑錛屼絾鏄痯ing鏁板煎熀鏈涓婇兘鍦1,2ms涔嬮棿錛宼cp榪炴帴搴旇ヤ笉鏄闂棰樺叧鍋ワ紝google浠ュ悗鎵懼埌絳旀堬紝鍦╩y.ini鏂囦歡鐨刐mysqld]閮ㄥ垎鍔犲叆:skip-name-resolve錛屼繚瀛樻枃浠訛紝閲嶅惎mysql錛屼竴鍒嘜K鍟︼紝閫熷害璞¢炰竴鏍蜂簡
鏂扮増鏈鐨刴ysql閰嶇疆璧鋒潵涓嶈薄浠ュ墠鐨勯偅涓鍌葷摐鍖栦簡錛岃繖涓闂棰樻姌鑵句簡鎴戜竴涓婂崍鐨勬椂闂達紝鏅氫笂鍥炴潵鎬葷畻鏄瑙e喅浜嗭紝鍢垮樋錛屽張瀛﹀埌涓浜涗笢瑗褲
Windows 2003涓嬬殑MySQL 5鏈嶅姟鍣錛屾湰鏈鴻繛鎺ュ埌MySQL鏈嶅姟闈炲父蹇錛屽矓鍩熺綉鍐呮湁涓ゅ彴linux鏈哄櫒錛屾湁涓鍙拌繛鎺ュ緢蹇錛屽彟澶栦竴鍙拌緭鍏ュ瘑鐮佸悗瑕佺瓑濂藉嚑縐掗挓鎵嶈兘榪炰笂銆
瑙e喅鍔炴硶錛
鍦∕ySQL鏈嶅姟鍣ㄧ殑閰嶇疆涓澧炲姞涓涓濡備笅閰嶇疆鍚庨熷害椋炲揩銆
[mysqld]
skip-name-resolve
闄勫綍錛( How MySQL uses DNS )
When a new thread connects to mysqld, mysqld will spawn a new thread to handle the request. This thread will first check if the hostname is in the hostname cache. If not the thread will call gethostbyaddr_r() and gethostbyname_r() to resolve the hostname.
If the operating system doesn't support the above thread-safe calls, the thread will lock a mutex and call gethostbyaddr() and gethostbyname() instead. Note that in this case no other thread can resolve other hostnames that is not in the hostname cache until the first thread is ready.
You can disable DNS host lookup by starting mysqld with --skip-name-resolve. In this case you can however only use IP names in the MySQL privilege tables.
If you have a very slow DNS and many hosts, you can get more performance by either disabling DNS lookop with --skip-name-resolve or by increasing the HOST_CACHE_SIZE define (default: 128) and recompile mysqld.
You can disable the hostname cache with --skip-host-cache. You can clear the hostname cache with FLUSH HOSTS or mysqladmin flush-hosts.
If you don't want to allow connections over TCP/IP, you can do this by starting mysqld with --skip-networking.
PHP榪滅▼榪炴帴MYSQL閫熷害鎱,鏈夋椂榪滅▼榪炴帴鍒癕YSQL鐢ㄦ椂4-20縐掍笉絳,鏈鍦拌繛鎺MYSQL姝e父,鍑虹幇榪欑嶉棶棰樼殑涓昏佸師鍥犳槸,榛樿ゅ畨瑁呯殑MYSQL寮鍚浜咲NS鐨勫弽鍚戣В鏋,鍦∕Y.INI(WINDOWS緋葷粺涓)鎴朚Y.CNF(UNIX鎴朙INUX緋葷粺涓)鏂囦歡鐨刐mysqld]涓嬪姞鍏skip-name-resolve榪欎竴鍙ャ
MYSQL榪滅▼榪炴帴閫熷害鎱㈢殑瑙e喅鏂規硶
鍦ㄥ矓鍩熺綉鍐呰繛鎺ュ叾浠栨満鍣ㄧ殑MYSQL,鍙戠幇閫熷害鎱㈢殑寰,涓嶇煡閬撲粈涔堝師鍥,鎬繪湁鍑犵掔殑寤惰繜.
鍚庢潵鍦ㄧ綉涓婂彂鐜拌В鍐蟲柟娉,my.ini閲岄潰娣誨姞
[mysqld]
skip-name-resolve
skip-grant-tables
榪欐牱閫熷害灝卞揩浜!
skip-name-resolve
閫夐」灝辮兘紱佺敤DNS瑙f瀽錛岃繛鎺ラ熷害浼氬揩寰堝氥備笉榪囷紝榪欐牱鐨勮瘽灝變笉鑳藉湪MySQL鐨勬巿鏉冭〃涓浣跨敤涓繪満鍚嶄簡鑰屽彧鑳界敤ip鏍煎紡銆
鑻ヤ嬌鐢╛skip-grant-tables緋葷粺灝嗗逛換浣曠敤鎴風殑璁塊棶涓嶅仛浠諱綍璁塊棶鎺у埗錛屼絾鍙浠ョ敤 mysqladmin flush-privileges鎴杕ysqladmin reload鏉ュ紑鍚璁塊棶鎺у埗;榛樿ゆ儏鍐墊槸show databases璇鍙ュ規墍鏈夌敤鎴峰紑鏀撅紝濡傛灉mysql鏈嶅姟鍣ㄦ病鏈夊紑榪滅▼甯愭埛錛屽氨鍦╩y.ini閲岄潰鍔犱笂skip-grant-tables
③ 如何通過RamDisk的方法加速小型資料庫的訪問速度
RamDisk簡介 本文首先介紹了如何在rh 系統上創建一個RamDisk 然後介紹了如何通過將資料庫內容存放到RamDisk中的方法來加速對資料庫的訪問 什麼是RamDisk?一個RamDisk是分配作為一個分區的內存塊 或者說將內存模擬為硬碟空間 從而可以想對待硬碟空間一樣在其上保存文件 為什麼會要使用RamDisk呢?主要是為了提高速度 若事先知道特定的文件將被高頻率訪問 通過將文件存放在內存里就可以提高性能 例如web伺服器就可以採用這種方式來加快訪問速度 下面是一些可能會對加深對RamDisk的理解的資源鏈接 /usr/src/linux/Documentation/RamDisk txt 如何使用RamDisk 使用RamDisk是非常簡單的 首先 RH 的預設安裝本身就有對RamDisk的支持 你所要作的就是格式化一個RamDisk 然後載入(mount)其到目錄結構下即可 通過命令 ls al /dev/ram* 可以查看系統可以利用的RamDisk的數目 這些RamDisk並不起作用 除非設置以後 下面是一個非常簡單的使用RamDisk的例子 # create a mount point: mkdir /tmp/RamDisk # create a filesystem: mke fs /dev/ram # mount the RamDisk: mount /dev/ram /tmp/RamDisk 這三個命令分別為RamDisk創建一個目錄 格式化它(創建文件系統) 最後載入該文件系統到 /tmp/RamDisk 上 下面就可以對待該目錄為一個分區使用 若格式化失敗 則說明你的系統內核沒有對RamDisk的支持 則需要重新編譯內核 RamDisk支持的內核開關是 CONFIG_BLK_DEV_RAM 預設的RamDisk的大小為 Mb= 塊 在創建randisk文件系統時可以得到RamDisk大小的信息 mke fs Jan for EXT FS b / / Linux ext filesystem format Filesystem label= inodes blocks blocks ( %) reserved for the super user First data block= Block size= (log= ) Fragment size= (log= ) block group blocks per group fragments per group inodes per group 運行命令 df k /dev/ram 可以查看可以真正使用的RamDisk的空間大小(因為創建文件系統時會佔用一些空間) >df k /dev/ram Filesystem k blocks Used Available Use% Mounted on /dev/ram % /tmp/RamDisk 需要注意的是當你的系統重新啟動以後 RamDisk中的數據會丟失 所以如果RamDisk中的數據被修改了 必須將其備份到別的目錄下 改變RamDisk的大小 為了使用RamDisk 可以通過將對RamDisk的支持編譯進入內核中或者編譯為模塊的方式 在需要時將其載入 編譯為模塊的方式可以在載入模塊時動態決定RamDisk的大小 當RamDisk被編譯進入內核 改變RamDisk的大小的方法為在nf中田加內容 RamDisk_size= (or RamDisk= for old kernels) 然後運行lilo命令 重新啟動機器 這樣下次載入RamDisk以後 大小就變為 M boot=/dev/hda map=/boot/map install=/boot/boot b prompt timeout= image=/boot/vmlinuz label=linux root=/dev/hda read only RamDisk_size= 當編譯RamDisk支持為模塊形式 可以在載入時決定RamDisk的大小 可以通過雜/etc/conf mole中添 options rd rd_size= 或者在動態載入是通過命令行的形式傳入 in *** od rd rd_size= 下面是關於如何使用模塊的一個例子 卸載前面載入的文件系統 umount /tmp/RamDisk 卸載模塊 rmmod rd 載入RamDisk模塊 並設置大小為 M in *** od rd rd_size= 創建一個文件系統 mke fs /dev/ram 載入RamDisk的文件系統 mount /dev/ram /tmp/RamDisk 在web伺服器中使用RamDisk的例子 這里舉一個在web伺服器中使用三個RamDisk的例子 這里要確保web伺服器的所有內容不超過 M(包括CGI的內容) 首先 對web伺服器的root目錄下的內容備份到其他地方 然後重新創建的根目錄 mv /home/d/ /home/d_real mkdir /home/d mkdir /home/d/cgi bin mkdir /home/d/ mkdir /home/d/icons 然後 在/etc/rc d/init d/中添加如下啟動執行信息 ### Make the RamDisk partitions / *** in/mkfs t ext /dev/ram / *** in/mkfs t ext /dev/ram / *** in/mkfs t ext /dev/ram ### Mount the RamDisks to their appropriate places mount /dev/ram /home/d/cgi bin mount /dev/ram /home/d/icons mount /dev/ram /home/d/ ### Copying real directory to RamDisks (the ### data on the RamDisks is lost after a reboot) tar C /home/| tar C /home/d x ### After this you can start the web server 注 切記若RamDisk中的數據被修改 並且做的修改都是有意義的 則需要對RamDisk中的數據做備份 你可以啟動一個cron任務來完成這個工作 如 每10分鍾檢查一次看是否有數據被修改 若有則對數據進行備份 RamDisk的一個應用是使用/tmp做為RamDisk 若系統中有很多程序使用RamDisk 則可以很明顯地加快系統速度 而且每次系統重新啟動這些暫時數據都會丟失 通過RamDisk加速小型資料庫的訪問速度 如果將將PostgreSQL資料庫伺服器文件載入到內存中就可以加快資料庫訪問速度 在/test目錄下載入RamDisk 一 在/test目錄下設置RamDisk mkdir p /Test mkfs t ext /dev/ram mount /dev/ram /Test 這時候你將擁有一個4M大小的RamDisk 根據需要你可以更改你的RamDisk的大小 二 為PostgreSQL設置RamDisk 理想狀態下 你將擁有兩個資料庫伺服器 一個是可以進行修改的 另外一個是存放在RamDisk中的拷貝 為了達到這個目的 需要使用命令 pg_mp 或 pg_mpall 注 這里假設已經在nf中設置RamDisk的大小 使其大於資料庫伺服器的大小 如果你希望了解合適的大小 可以使用命令 cd /var/lib/pgsql; 然後 ### Stop the current postgresql server /etc/rc d/init d/postgres stop ### rename the current directory mv /var/lib/pgsql /var/lib/pgsql_main #### Create a directory to have our RamDisk on mkdir p /var/lib/pgsql_memory #### change the ownership of the new directory to postgres or whatever #### the actual owner is chown postgres /var/lib/pgsql_memory #### Make an alias or link to the original name /var/lib/pgsql ln s /var/lib/pgsql_memory /var/lib/pgsql #### Format the RamDisk mkfs t ext /dev/ram #### Mount the RamDisk to the postgresql directory mount /dev/ram /var/lib/pgsql_memory #### Copy everything from the main directory into the RamDisk tar C /var/lib/pgsql_main cp | tar C /var/lib/pgsql_memory xp ### Start the current postgresql server /etc/rc d/init d/postgres start 經過測試 發現在RamDisk中的PostgreSQL的性能提升最高達到 %左右 需要的時候 可以將其他的應用放置在RamDisk中以提升效率 如ldap伺服器等 lishixin/Article/program/Oracle/201311/16820
④ 有哪幾種方式提高資料庫的訪問速度
我以前收藏的,挺不錯:
1、存儲
將硬碟分成NTFS格式,NTFS比FAT32快,並看你的數據文件大小,1G以上你可以採用多資料庫文件,這樣可以將存取負載分散到多個物理硬碟或磁碟陣列上。
2、tempdb
tempdb也應該被單獨的物理硬碟或磁碟陣列上,建議放在RAID 0上,這樣它的性能最高,不要對它設置最大值讓它自動增長
3、日誌文件
日誌文件也應該和數據文件分開在不同的理硬碟或磁碟陣列上,這樣也可以提高硬碟I/O性能。
4、分區視圖
就是將你的數據水平分割在集群伺服器上,它適合大規模OLTP,SQL群集上,如果你資料庫不是訪問特別大不建議使用。
5、簇索引
你的表一定有個簇索引,在使用簇索引查詢的時候,區塊查詢是最快的,如用between,應為他是物理連續的,你應該盡量減少對它的updaet,應為這可以使它物理不連續。
6、非簇索引
非簇索引與物理順序無關,設計它時必須有高度的可選擇性,可以提高查詢速度,但對表update的時候這些非簇索引會影響速度,且佔用空間大,如果你願意用空間和修改時間換取速度可以考慮。
7、索引視圖
如果在視圖上建立索引,那視圖的結果集就會被存儲起來,對與特定的查詢性能可以提高很多,但同樣對update語句時它也會嚴重減低性能,一般用在數據相對穩定的數據倉庫中。
8、維護索引
你在將索引建好後,定期維護是很重要的,用dbcc showcontig來觀察頁密度、掃描密度等等,及時用dbcc indexdefrag來整理表或視圖的索引,在必要的時候用dbcc dbreindex來重建索引可以受到良好的效果。
不論你是用幾個表1、2、3點都可以提高一定的性能,5、6、8點你是必須做的,至於4、7點看你的需求。