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)癱瘓。

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

主站蜘蛛池模板: 国产电话自拍伊人| 国产精品香蕉在线| 国模私拍一区二区| 亚洲一区二区成人| 狠狠躁天天躁夜夜躁婷婷| 亚洲综合一区国产精品| 久草视频中文| 亚洲日韩欧美在线观看| 国产www网站| 欧美一区日韩一区中文字幕页| 精品国产成人高清在线| 欧美不卡视频一区发布| 日本欧美中文字幕精品亚洲| 日韩成人在线视频| 亚洲第七页| 自拍偷拍欧美| 这里只有精品在线播放| 亚洲综合欧美在线一区在线播放| 天天摸天天操免费播放小视频| 青青青草国产| 一本久道久综合久久鬼色| 国产成人精品综合| 毛片基地美国正在播放亚洲| 久久毛片网| 欧美亚洲另类在线观看| 99re精彩视频| 香蕉视频国产精品人| 国产白浆在线| 国产亚卅精品无码| 中文字幕无码制服中字| 国产欧美综合在线观看第七页| 久久网欧美| 日韩毛片在线视频| 青青久视频| 国产在线视频福利资源站| 欧美精品亚洲精品日韩专区va| 波多野结衣一区二区三视频 | 精品国产Av电影无码久久久| 五月天久久婷婷| 久久永久免费人妻精品| 全部免费毛片免费播放| 国产理论精品| 国产靠逼视频| 丁香综合在线| 亚洲男人的天堂在线观看| 国产日韩丝袜一二三区| 国产日韩欧美视频| 久久精品国产国语对白| 国产欧美日韩综合一区在线播放| 欧洲成人免费视频| 99久久精彩视频| 亚洲最新在线| 成人夜夜嗨| 国产在线精彩视频二区| 欧美高清三区| 啪啪啪亚洲无码| 国产经典免费播放视频| 国产亚洲美日韩AV中文字幕无码成人| 亚洲三级网站| 伊人久久大香线蕉成人综合网| 99这里只有精品免费视频| 男女男精品视频| 国产免费怡红院视频| 亚洲无码91视频| 欧美中文字幕一区| 精品一区二区久久久久网站| 99成人在线观看| 久久久久久午夜精品| 男女精品视频| 国产乱子伦无码精品小说| 2022精品国偷自产免费观看| 婷婷色一二三区波多野衣| 国产又粗又爽视频| 九九热精品免费视频| 日韩高清在线观看不卡一区二区| 国产精品任我爽爆在线播放6080 | 久草视频福利在线观看| 欧美色图久久| 免费一看一级毛片| 国产一区二区三区日韩精品| 亚卅精品无码久久毛片乌克兰| 欧美狠狠干|