亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MySQL數(shù)據(jù)庫的優(yōu)化

        2013-04-25 02:17:34吳滄舟蘭逸正
        電子科技 2013年9期
        關(guān)鍵詞:引擎數(shù)據(jù)庫優(yōu)化

        吳滄舟,蘭逸正,張 輝

        (西安電子科技大學(xué) 技術(shù)物理學(xué)院,陜西 西安710071)

        在3G與社區(qū)網(wǎng)站進行融合的時代,微博、人人網(wǎng)等相關(guān)的動態(tài)實時信息比重正在不斷增長,網(wǎng)站所面臨高并發(fā)、高流量、大數(shù)據(jù)量等問題也成為互聯(lián)網(wǎng)時代的特色。而處于網(wǎng)站存儲核心的數(shù)據(jù)庫,其優(yōu)化問題已成為各大門戶網(wǎng)站的重點。而在各類數(shù)據(jù)庫中MySQL由于其低成本及開源等特性被廣大網(wǎng)站開發(fā)者所熱愛。在TechTarget發(fā)起的2012年中國數(shù)據(jù)管理優(yōu)先度調(diào)查中顯示,有45.5%的用戶表示愿意遷至MySQL數(shù)據(jù)庫平臺。

        1 基礎(chǔ)優(yōu)化

        1.1 MySQL存儲引擎的選擇

        MySQL默認配置了許多不同的存儲引擎[1],可以預(yù)先設(shè)置或者在MySQL服務(wù)器中啟用。其類型有:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。每一種類型,都有其特別之處,這里對幾種常用的存儲引擎進行分析其余的都略作解釋:

        MyISAM[2]。適用于以讀為主,數(shù)據(jù)一致性要求不是太高。

        (1)不支持事務(wù)。表級鎖定:其鎖定機制是表級索引,這雖然可以讓鎖定的實現(xiàn)成本很小但也同時大幅降低了其并發(fā)性能。讀寫互相阻塞:不僅會在寫入時阻塞讀取,MyISAM還會在讀取的時候阻塞寫入,但讀本身并不會阻塞另外的讀。InnoDB:行級鎖定對高并發(fā)有較好的適應(yīng)能力,但需要確保查詢是通過索引完成,適用于數(shù)據(jù)更新較為頻繁的場景。具有較好的事務(wù)支持:支持4個事務(wù)隔離級別,支持多版本讀。行級鎖定:通過索引實現(xiàn),全表掃描仍然會是表鎖,注意間隙鎖的影響。

        (2)讀寫阻塞與事務(wù)隔離級別相關(guān)。具有高效的緩存特性:能緩存索引,也能緩存數(shù)據(jù)。BDB:可替代InnoDB的事務(wù)引擎,支持COMMIT、ROLLBACK和其他事務(wù)特性。Memory:將所有數(shù)據(jù)保存在RAM中,在需要快速查找引用和其他類似數(shù)據(jù)的環(huán)境下,可提供快速的訪問。Merge:允許MySQL DBA或開發(fā)人員將一系列等同的MyISAM表以邏輯方式組合在一起,并作為1個對象引用它們。對于諸如數(shù)據(jù)倉儲等VLDB環(huán)境較適合。Archive:為大量較少引用的歷史、歸檔、或安全審計信息的存儲和檢索提供了良好的解決方案。Federated:能將多個分離的MySQL服務(wù)器鏈接起來,從多個物理服務(wù)器創(chuàng)建一個邏輯數(shù)據(jù)庫。適合于分布式環(huán)境或數(shù)據(jù)集市環(huán)境。Cluster/NDB:MySQL的簇式數(shù)據(jù)庫引擎,尤其適合于具有高性能查找要求的應(yīng)用程序,這類查找需求還要求具有最高的正常工作時間和可用性。Other:其他存儲引擎包括CSV,Blackhole,以及Example引擎。

        顯然MySQL為對應(yīng)各種不同的狀況,其本身便已劃分了很多存儲引擎,選擇合適的存儲引擎不僅可以獲得穩(wěn)定的服務(wù)還能額外增長數(shù)據(jù)庫處理數(shù)據(jù)的速度

        1.2 索引優(yōu)化

        MySQL建有索引機制,而所謂的索引就是用于快速地尋找那些具有特定值的記錄,所以MySQL索引都以B-樹的形式保存。如圖1所示。

        圖1 student表中的學(xué)生數(shù)據(jù)

        現(xiàn)有100個學(xué)生的成績,當(dāng)執(zhí)行Select語句查詢不及格的學(xué)生有多少時,若沒有索引,MySQL便會遍歷全表,逐個比較。但若在Achievement上建立索引,MySQL便會先查詢索引里符合條件的同學(xué),然后再執(zhí)行數(shù)據(jù)庫讀取指定的學(xué)生數(shù)據(jù),也就是說,數(shù)據(jù)庫的讀寫操作次數(shù)變少了。當(dāng)然在表格數(shù)據(jù)較少的情況下,區(qū)別不大。

        但若假設(shè)現(xiàn)在數(shù)據(jù)庫中建有50萬張數(shù)據(jù)的表,如果沒有索引,MySQL將會從頭到尾檢索一次,這樣的執(zhí)行效率將會相當(dāng)?shù)汀?梢娝饕拇嬖趯蠓奶岣邫z索效率,當(dāng)然索引也存在一些缺點。索引文件要占磁盤空間。如果有大量的索引,索引文件可能會比數(shù)據(jù)文件更快地達到最大的文件尺寸。其次,索引文件降低了大多數(shù)涉及寫入的操作的時間,因為寫操作不僅涉及數(shù)據(jù)行,而且還常涉及索引。

        1.3 存儲過程

        存儲過程[3]即為以后使用而保存一條或多條MySQL語句的集合,即批文件。使用存儲過程的優(yōu)點即簡單、安全、高性能,而且重要的是與基本的SQL語句相比,它的處理速度更快,但其編寫較SQL語句更復(fù)雜,對編寫者有較高的要求。

        1.4 硬件上的提升

        以空間換時間,或以時間換空間,可謂是伴隨著計算機誕生以來一直存在的事物。如果只是學(xué)習(xí),任何一臺老式計算機做服務(wù)器都沒有問題,因為不必擔(dān)心處理數(shù)據(jù)耗費的時間問題,但是作為一個高訪問量的網(wǎng)站,一臺專門的數(shù)據(jù)庫服務(wù)器是必要的。以更大的內(nèi)存節(jié)省計算機計算時間,以更出色的硬件性能來完成數(shù)據(jù)庫的存儲問題。

        2 Sharding

        Sharding意為數(shù)據(jù)切分,涉及的具體步驟是分庫分表。數(shù)據(jù)庫的Sharding分為2種,水平切分和垂直切分[4]。前者適合表不多,但每張表的數(shù)據(jù)較多,后者適合因為表多而導(dǎo)致數(shù)據(jù)也多,當(dāng)然多數(shù)時候兩者可以結(jié)合,如圖2所示,DB指數(shù)據(jù)庫端,Shard指切分后的數(shù)據(jù)庫。

        圖2 數(shù)據(jù)庫切分示意圖

        2.1 垂直切分

        所謂垂直切分是將組成數(shù)據(jù)庫的表垂直的切開,然后將其分散到多臺數(shù)據(jù)庫主機上。例如現(xiàn)有3張表,Student,Teacher,Achievement。那 么Student和Achievement需分到一個庫,Teacher分到另一庫。這樣分的原因是表關(guān)聯(lián)是無法在數(shù)據(jù)庫級別完成的,所以垂直切分中分庫的表都是沒有關(guān)聯(lián)的。

        2.2 水平切分

        水平切分是給一個表規(guī)定適合的記錄數(shù),把超過記錄數(shù)的記錄放入新的表中。例如現(xiàn)在有一張記有500萬數(shù)據(jù)量的單張數(shù)據(jù)表,切分成10份,分別放入Table1,Table2以此類推至Table10,那么當(dāng)往表里再更新數(shù)據(jù)時,就是往任一一個只有50萬的數(shù)據(jù)表中插入數(shù)據(jù),此時更改的索引量與原來500萬相比將呈指數(shù)級下降。實際上便是分表操作。

        當(dāng)然水平切分主要有兩種思路[5]:一種是使用MD5哈希,做法是對UID進行md5加密,取前幾位,然后就可以將不同的UID哈希到不同的用戶表(user_xx)中,如圖3所示。

        圖3 MD5哈希代碼

        然而這種算法無法擴展表,一旦用戶數(shù)量過多,則會造成單張表單數(shù)據(jù)量過大的問題。另一種則是使用移位,方法如圖4所示。

        圖4 移位代碼

        如圖所示,其意思是將uid向右移動20位,這樣就可以將約前100萬的用戶數(shù)據(jù)放在第一個表user_000,第二個100萬的用戶數(shù)據(jù)放在第二個表user_001中,如此循環(huán)。直到user_999,可分1 000張,若不夠,則改后綴即可。

        3 集群

        集群(Cluster)技術(shù)是使用特定的連接方式,將價格相對較低的硬件設(shè)備結(jié)合起來,同時也能提供高性能相當(dāng)?shù)娜蝿?wù)處理能力。

        如上文提到的提升硬件性能,但是多數(shù)時候單臺計算機已無法滿足軟件的需求,便引入集群的概念,即AP+DB的架構(gòu):AP指應(yīng)用程序,DB指數(shù)據(jù)庫端,AP放在一個服務(wù)器上,DB放在另一個服務(wù)器上,又或者是多臺服務(wù)器運行一個DB,集群利用的是將一臺計算機需要做的事,分散到多臺上去完成,就可以更高效地完成單臺計算機無法完成的事。

        圖5 集群示意圖

        4 結(jié)束語

        雖然數(shù)據(jù)庫的優(yōu)化手段有多種,但在面對大流量、高并發(fā)量的數(shù)據(jù)時,有時依然不能很好地解決問題,硬件的讀寫速度從某種角度講較大程度上限制了數(shù)據(jù)庫的性能,但以上的優(yōu)化手段還是可以很好地提升其服務(wù)性能。

        [1]SABA P.深入理解MySQL核心技術(shù)[M].李芳,于紅蕓,邵健,譯.北京:中國電力出版社,2009.

        [2] 簡朝陽.MySQL數(shù)據(jù)庫性能優(yōu)化之存儲引擎選擇[EB/OL].(2012-09-10)[2012-11-05]http://isky000.com/database/mysql-performance-tuning-storage-engine.

        [3] 劉曉霞,鐘鳴.MySQL必知必會[M].北京:人民郵電出版社,2009.

        [4] 簡朝陽.MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計[M].北京:電子工業(yè)出版社,2012.

        [5]Veda.數(shù)據(jù)庫水平切分的兩個思路[EB/OL].(2012-03-02)[2012-11-07]http://www.nowamagic.net/librarys/veda/detail/1528.

        [6] 王威.MySQL數(shù)據(jù)源代碼分析及存儲引擎的設(shè)計[D].南京郵電大學(xué),2012.

        [7] 胡要,李燕.MySQL數(shù)據(jù)庫存儲引擎探析[J].軟件導(dǎo)刊,2012,11(12):129-131.

        猜你喜歡
        引擎數(shù)據(jù)庫優(yōu)化
        超限高層建筑結(jié)構(gòu)設(shè)計與優(yōu)化思考
        民用建筑防煙排煙設(shè)計優(yōu)化探討
        關(guān)于優(yōu)化消防安全告知承諾的一些思考
        一道優(yōu)化題的幾何解法
        藍谷: “涉藍”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        精品亚洲国产探花在线播放| 国产一区二区三区四区三区| 永久黄网站色视频免费看| 女人做爰高潮呻吟17分钟| 无码av一区在线观看| 中文无字幕一本码专区| 无码高清视频在线播放十区| 黄色录像成人播放免费99网| 一区二区三区亚洲免费| 亚洲av成人无码久久精品老人| 麻麻张开腿让我爽了一夜| 国产系列丝袜熟女精品视频| 美国又粗又长久久性黄大片| 国产精品黄色片在线看| 亚洲av成人无码网站大全| 亚洲国产成人手机在线观看| 色婷婷精久久品蜜臀av蜜桃| 中文字幕亚洲精品一区二区三区| 国产亚洲精品aaaa片小说| 天天狠天天透天干天天| 一区二区三区日本美女视频| 久久黄色视频| 精品人妻系列无码人妻免费视频| 国产高清在线91福利| 男女视频网站在线观看| 人妻少妇出轨中文字幕| 亚洲精品你懂的在线观看| 亚洲粉嫩av一区二区黑人| 国产一区二区三区天堂| 欧美a级毛欧美1级a大片免费播放| 欧美三级免费网站| av一区二区三区高清在线看| 欧美激情视频一区二区三区免费| 色偷偷久久一区二区三区| 综合久久久久6亚洲综合| 国产精品熟女视频一区二区三区| 香港三级日本三级a视频| 99ri国产在线观看| 一区二区三区国产天堂| 五月丁香六月综合缴清无码| 久久亚洲国产精品成人av秋霞 |