999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

小議ORACLE和MYSQL的聯(lián)合查詢差異

2013-04-29 00:00:00宋占亮
中國新通信 2013年2期

【摘要】隨著計算機技術和數(shù)據(jù)處理技術的發(fā)展,數(shù)據(jù)庫管理軟件得到了越來越廣泛的應用。其中Oracle和MySql都是現(xiàn)在廣泛被應用的數(shù)據(jù)庫管理軟件,兩者在SQL語法操作方面幾乎相同,但是在語法的執(zhí)行過程中實現(xiàn)的原理有所差別,最近筆者在一個項目中將數(shù)據(jù)庫由Oracle變?yōu)榱薓ySql,結果原來的幾個聯(lián)合查詢語句的執(zhí)行效率急劇下降,甚至有時導致內存溢出,這說明兩個數(shù)據(jù)庫在執(zhí)行SQL的原理方面有所差異。本文僅就聯(lián)合查詢討論兩者差異。

【關鍵詞】OracleMySql執(zhí)行原理聯(lián)合查詢差異

Oracle和MySql都是目前得到廣泛應用的數(shù)據(jù)庫,兩者在SQL語句語法方面大致相同,但是在SQL的解析執(zhí)行機制上卻有比較明顯的差異,開發(fā)人員在項目的數(shù)據(jù)庫需要在兩者間變換的時候要注意這些差異,以免給工作帶來不必要的麻煩。本文僅結合筆者不久前的工作經歷簡單討論下兩者連表查詢過程中的差異。

一、Oracle和MySql簡介

Oracle數(shù)據(jù)庫系統(tǒng)是美國ORACLE公司(甲骨文)提供的以分布式數(shù)據(jù)庫為核心的一組軟件產品,是目前最流行的C/S(客戶端/服務器)或B/S(瀏覽器/服務器)體系結構的數(shù)據(jù)庫之一。ORACLE數(shù)據(jù)庫是目前世界上使用最為廣泛的數(shù)據(jù)庫管理系統(tǒng),作為一個通用的數(shù)據(jù)庫系統(tǒng),它具有完整的數(shù)據(jù)管理功能;作為一個關系數(shù)據(jù)庫,它是一個完備關系的產品;作為分布式數(shù)據(jù)庫它實現(xiàn)了分布式處理功能。

MySQL是一個小型關系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。而2009年,SUN又被Oracle收購。MySQL是一種關聯(lián)數(shù)據(jù)庫管理系統(tǒng),關聯(lián)數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個大倉庫內。這樣就增加了速度并提高了靈活性。MySQL軟件采用了GPL(GNU通用公共許可證)。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數(shù)據(jù)庫。

Oracle和MySql都支持SQL(結構化查詢語言)。SQL是用于訪問數(shù)據(jù)庫的最常用標準化語言。

二、問題的出現(xiàn)

由于某些原因,一個項目的數(shù)據(jù)庫由oracle更換為了MySql,數(shù)據(jù)庫變化后項目的大部分功能都正常,但是原來的幾個聯(lián)合查詢語句的執(zhí)行效率急劇下降,甚至有時導致內存溢出。

三、問題的模擬和分析

為了分析上述問題,分別在Oracle和MySql數(shù)據(jù)庫中建立完全相同的兩個表:city表;(字段:id,cityname)person表(字段:id,name,cityid)。City表中有100條記錄,然后通過逐漸增加person表中記錄,觀察并記錄在此過程中執(zhí)行聯(lián)合查詢兩者的差異。

當person表中記錄比較少的時候,兩者的執(zhí)行速度沒有明顯差異,很值MySql還占有微弱的優(yōu)勢,這表明作為一款開源數(shù)據(jù)庫軟件,其性能還是相當優(yōu)越的。

當person表中的記錄數(shù)增加到幾十萬條的時候,兩者的執(zhí)行效率開始出現(xiàn)差別,MySql的執(zhí)行速度開始下降。

當person表中的記錄數(shù)到達100萬的時候,oracle仍然可以正常執(zhí)行聯(lián)合查詢的操作;而MySql的報出了內存溢出的錯誤。

由上述實驗過程可知:對于完全相同的一條聯(lián)合查詢的SQL語句,盡管表面上看來兩個數(shù)據(jù)庫都在進行同樣的查詢操作,但是在實現(xiàn)的原理和機制上是不同的。

在MySQL performance tunning的課程當中,老師曾經指出:MySql對聯(lián)合查詢的支持并不完善,只是簡單的做了笛卡爾乘積而沒有進行適當?shù)膬?yōu)化操作。當數(shù)據(jù)量小的時候,還感覺不出來這個不足,但是當數(shù)據(jù)量大的時候,這個缺點就變得相當突出,甚至成為系統(tǒng)效率的最大瓶頸。

對比之下,Oracle數(shù)據(jù)庫對聯(lián)合查詢操作進行了優(yōu)化處理,因此在上面的實驗只可以順利的執(zhí)行完百萬條記錄的聯(lián)合查詢操作。

四、問題解決方法

通過上面的實驗和對相關資料的查詢和分析,問題的原因已經發(fā)現(xiàn),需要在應用MySql數(shù)據(jù)庫的條件下采取正確的聯(lián)合查詢解決方案。

MySql官方對于上述問題給出的推薦解決方案是:對于大數(shù)量的多表數(shù)據(jù)提取,不要在SQL語句中進行聯(lián)合查詢操作,推薦在軟件中進行數(shù)據(jù)的分別查詢和拼接處理操作,即變聯(lián)合查詢操作為兩次或者多次的單表查詢操作和一次或者多次的數(shù)據(jù)拼接操作。

按照上述推薦方案,變兩個表的聯(lián)合查詢操作為兩次單表查詢操作和一次數(shù)據(jù)拼接操作,這些操作都在軟件中實現(xiàn),經測試可以正常運行。

至此,問題解決。

五、結束語

本文中所探討的只是兩款數(shù)據(jù)庫軟件的差異之一,當然兩者之間還存在著很多的差別,其中有些無足輕重,有的卻非常重要,值得引起程序員和開發(fā)者的高度重視,因為這些差異會在系統(tǒng)進行數(shù)據(jù)庫變換和用多種數(shù)據(jù)庫進行開發(fā)工作時嚴重影響系統(tǒng)的性能,甚至導致系統(tǒng)癱瘓。

學習和掌握這些差異將避免給工作帶來不必要的麻煩并達到事半功倍的效果,對提高工作效率和工作質量起到一定作用。

主站蜘蛛池模板: 国产午夜在线观看视频| 日本久久久久久免费网络| 毛片卡一卡二| 99re经典视频在线| 亚洲精品无码av中文字幕| 欧美日韩高清在线| 国产黑丝一区| 午夜啪啪福利| 亚洲无码精品在线播放| 国内精品久久九九国产精品 | 中文字幕欧美成人免费| 欧美一级大片在线观看| 啪啪永久免费av| 在线精品亚洲一区二区古装| 亚洲精品中文字幕午夜 | AV老司机AV天堂| 国产Av无码精品色午夜| 最新无码专区超级碰碰碰| 亚洲高清国产拍精品26u| 国产成人精品视频一区二区电影| 2018日日摸夜夜添狠狠躁| 波多野结衣国产精品| 99视频精品全国免费品| 欧美精品v| 女人18一级毛片免费观看| 夜夜高潮夜夜爽国产伦精品| 一本一本大道香蕉久在线播放| 国产视频大全| 国产SUV精品一区二区6| 国产美女主播一级成人毛片| 亚洲二三区| 老色鬼欧美精品| av天堂最新版在线| 中文字幕资源站| 五月婷婷伊人网| 国产日韩精品一区在线不卡| 国产欧美网站| 99免费视频观看| 国产成人无码久久久久毛片| 动漫精品中文字幕无码| 国产精品乱偷免费视频| 色婷婷亚洲综合五月| 国产精品毛片一区视频播| 国产九九精品视频| 欧美日韩在线成人| 丰满的少妇人妻无码区| 成人久久精品一区二区三区 | 国产美女免费网站| 亚洲AV无码久久精品色欲| 波多野结衣中文字幕久久| 国产人前露出系列视频| 伊人色综合久久天天| 午夜爽爽视频| 国产精品香蕉| 国产高清在线精品一区二区三区| 亚洲无码视频喷水| 国产嫖妓91东北老熟女久久一| 国产精品一线天| 免费人成视网站在线不卡| 香蕉eeww99国产在线观看| 中文字幕自拍偷拍| 青青久久91| 夜夜高潮夜夜爽国产伦精品| 国产精品第一区| 色亚洲激情综合精品无码视频| 亚洲乱码视频| 亚欧美国产综合| 自拍欧美亚洲| 亚洲第一区在线| 欧美自慰一级看片免费| 国模视频一区二区| 国产亚洲精品资源在线26u| 国产特级毛片| 91精品国产自产91精品资源| 在线观看国产精品日本不卡网| 中美日韩在线网免费毛片视频| 国产成人精品日本亚洲| 国产波多野结衣中文在线播放 | 高清色本在线www| 国产在线91在线电影| WWW丫丫国产成人精品| 亚洲三级片在线看|