作者 主題: [閒聊]PHP搭配ORACLE好還是MYSQL?  (閱讀 16277 次)

0 會員 與 1 訪客 正在閱讀本文。

fox_nico

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 於: 2004-07-28 13:42 »
如題.
有人2種都用過嗎?
曾看過一篇測試報告.說PHP搭配MYSQL的效能比ORACLE好.
各位覺得呢? :P
可我看大家都是用PHP+MYSQL.
目前還沒看過有搭配ORACLE的...

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5401
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #1 於: 2004-07-28 14:17 »
這好像與 php 無關.
至於, mysql 與 oracle 那個好? 兩個不同等級的東西要怎麼比呢?

東西沒有絕對的好壞, 看你的需求與用途才能決定吧.

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #2 於: 2004-07-29 08:20 »
MYSQL跟ORACLE兩個是定位完全不同的產品吧
MYSQL定位在"輕量級的小型資料庫系統"
強調的是效能而不是功能因此很多標準的SQL語法都不支援
ORACLE的定位不用說了吧
他本身就是一個大型資料庫系統
至於哪個好就看你的用途吧
如果只是想寫個留言版程式
用到ORACLE也太誇張了吧
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #3 於: 2004-07-29 16:25 »
寫成module,
存取db儘量用標準的sql語法,
我想只要是RDB就可以用吧...

fox_nico

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #4 於: 2004-07-30 09:21 »
嗯.也許大家會很奇怪,我問的問題吧.
因為......
我們公司就是用PHP+ORACLE.
當然,不只是留言版.
所以依大家的討論看來.用ORACLE是正確的(因為MYSQL只適合在小型的資料庫,如:留言版)
但我們有近萬筆的資料.約有20-30個TABLE.
看來是用ORACLE比較好囉?
(本來很懷疑為什麼不用MYSQL就好了...所以才上來看大家的意見的啦..)
不知道有沒有人成功架過PHP+ORACLE呢?
我都裝不起來,一直說 libclntsh.so.8.0和libwtc8.so is needed by php-4.xxxxx
可我路徑都給了.他就是不讓裝. 當我用.--nodeps裝起來. 我的apache就無法啟動了...有人有這方面的資料嗎?先謝囉!
找遍GOOGLE....沒有一個可以用..救命丫!!
如果像這種xxxx.so is needed by xxxxx 我可以將該檔案copy 到某個地方裡面嗎?(他就捉得到了)
==>這應該算是和PHP有關吧??..... >"<
不好意思.知道的前輩希望可以不吝告知小弟!! 甘恩吶... ^^

==>我的環境是linux 7.1 + php-4.0.4

小穎

  • 俺是博士!
  • *****
  • 文章數: 1005
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #5 於: 2004-07-30 09:51 »
MySQL真的只適合在小型資料庫環境嗎?
據聞…德國某家銀行用兩台SPARC跑MySQL提供服務耶!當然…他們用那一個版本的MySQL就不知道啦!

資料庫規劃、資料庫管理、程式撰寫這三者才是重要的吧!
用那種資料庫也需看你的環境及需求而定!

有在好、在貴的資料庫…沒有真正發揮它的功能及能力又有什麼用呢?

當然…如果你需要好的技術支援的話,那些貴到暴的資料庫我想是很好的選擇,台灣有專業廠商或MySQL原廠可提供服務嗎?有人知道嗎? :roll:

近萬筆?也還好吧!我們有總共超過百萬筆的資料存在MySQL耶!重點是…你到底存了什麼,怎麼用吧!

PS.各位學長要不要介紹個幾本好的資料庫書籍來研究研究? 8)
另…damon學長想問一下你們跟那家公司那個業務談買Oracle的?他很好奇那個業務這麼利害,他想挖角!

fox_nico

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #6 於: 2004-07-30 10:09 »
引述: "小穎"
MySQL真的只適合在小型資料庫環境嗎?
據聞…德國某家銀行用兩台SPARC跑MySQL提供服務耶!當然…他們用那一個版本的MySQL就不知道啦!

資料庫規劃、資料庫管理、程式撰寫這三者才是重要的吧!
用那種資料庫也需看你的環境及需求而定!

有在好、在貴的資料庫…沒有真正發揮它的功能及能力又有什麼用呢?

當然…如果你需要好的技術支援的話,那些貴到暴的資料庫我想是很好的選擇,台灣有專業廠商或MySQL原廠可提供服務嗎?有人知道嗎? :roll:

近萬筆?也還好吧!我們有總共超過百萬筆的資料存在MySQL耶!重點是…你到底存了什麼,怎麼用吧!

PS.各位學長要不要介紹個幾本好的資料庫書籍來研究研究? 8)
另…damon學長想問一下你們跟那家公司那個業務談買Oracle的?他很好奇那個業務這麼利害,他想挖角!


嗯嗯..我也很同意您的觀點.其實MYSQL應該就很好用了說.沒辦法丫.偶不是老闆...=.=
這是我們老闆自己決定買的啦.不是業務.我覺得應該是他考慮到公司以後成長的話,就不用轉資料庫了!(丫災)
就存個戶資料,圖片,員工,請假,服務單.商品資訊,資料,等等囉!
是有點小複雜啦..^^

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #7 於: 2004-08-02 08:33 »
呵呵...那我也推薦另一個資料庫吧Postgre SQL
提供了許多MySQL還不支援的功能
像是trigger,stored procedure
在Native Language支援上有支援Big5
相信對許多"許功餐"夢靨的人應該是個不錯的解決方案
自己實驗的結果
連table,function命名成中文都沒有問題
用起來倒是蠻快樂的
把DB的資料全部中文化後省去了不少
開發人員間溝通的時間
反正中文都寫的清清楚楚的
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #8 於: 2004-08-02 13:13 »
引述: "ricky"
呵呵...那我也推薦另一個資料庫吧Postgre SQL
提供了許多MySQL還不支援的功能
像是trigger,stored procedure
在Native Language支援上有支援Big5
相信對許多"許功餐"夢靨的人應該是個不錯的解決方案
自己實驗的結果
連table,function命名成中文都沒有問題
用起來倒是蠻快樂的
把DB的資料全部中文化後省去了不少
開發人員間溝通的時間
反正中文都寫的清清楚楚的


pgsql 不錯用,
而且它算是比較完整的rdb,
用mysql的話,
有些功能要自己用程式處理掉.

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #9 於: 2004-08-02 13:16 »
引述: "小穎"
MySQL真的只適合在小型資料庫環境嗎?
據聞…德國某家銀行用兩台SPARC跑MySQL提供服務耶!當然…他們用那一個版本的MySQL就不知道啦!

資料庫規劃、資料庫管理、程式撰寫這三者才是重要的吧!
用那種資料庫也需看你的環境及需求而定!


這....
要看他們是買商業版還是下載版,
上面是存web暫存資料或客戶資料,
不然資安流程檢查可能會過不了...

twbestama

  • 懷疑的國中生
  • **
  • 文章數: 45
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #10 於: 2004-08-03 17:00 »
引述: "ricky"
呵呵...那我也推薦另一個資料庫吧Postgre SQL
提供了許多MySQL還不支援的功能
像是trigger,stored procedure
在Native Language支援上有支援Big5
相信對許多"許功餐"夢靨的人應該是個不錯的解決方案
自己實驗的結果
連table,function命名成中文都沒有問題
用起來倒是蠻快樂的
把DB的資料全部中文化後省去了不少
開發人員間溝通的時間
反正中文都寫的清清楚楚的


Postgre SQL  <===不推廌使用,因為使用的問題很多
stored procedure:
請參考:http://dev.mysql.com/doc/mysql/en/Stored_Procedures.html
trigger:
請參考:http://dev.mysql.com/doc/mysql/en/ANSI_diff_Triggers.html
容量:http://mysql.megalink.com/doc/mysql/en/Table_size.html
我們公司mysql  和  oracle都有使用....
我倒覺得mysql的效率比oracle高.....

ricky

  • 區域板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #11 於: 2004-08-03 17:23 »
引述: "twbestama"
引述: "ricky"
呵呵...那我也推薦另一個資料庫吧Postgre SQL
提供了許多MySQL還不支援的功能
像是trigger,stored procedure
在Native Language支援上有支援Big5
相信對許多"許功餐"夢靨的人應該是個不錯的解決方案
自己實驗的結果
連table,function命名成中文都沒有問題
用起來倒是蠻快樂的
把DB的資料全部中文化後省去了不少
開發人員間溝通的時間
反正中文都寫的清清楚楚的


Postgre SQL  <===不推廌使用,因為使用的問題很多
stored procedure:
請參考:http://dev.mysql.com/doc/mysql/en/Stored_Procedures.html
trigger:
請參考:http://dev.mysql.com/doc/mysql/en/ANSI_diff_Triggers.html
容量:http://mysql.megalink.com/doc/mysql/en/Table_size.html
我們公司mysql  和  oracle都有使用....
我倒覺得mysql的效率比oracle高.....

有什麼問題呢??說來聽聽吧
搞不好這個問題我有遇過
至於上面提到的一些功能沒看錯的話應該還在alpha release階段吧
也就是還在實驗中並不是正式release喔
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

xportal

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
    • http://xportal.cn/
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #12 於: 2004-08-04 06:46 »
引述: "fox_nico"

我們公司就是用PHP+ORACLE.
當然,不只是留言版.
所以依大家的討論看來.用ORACLE是正確的(因為MYSQL只適合在小型的資料庫,如:留言版)
但我們有近萬筆的資料.約有20-30個TABLE.
看來是用ORACLE比較好囉?

小兒科
我們寫的這個入口網是用PHP+Mysql,目前有二佰多個table,配銷系統完成後會有三佰多個table。
有空過來看看,有全天免註冊開放的範例網站(http://eip.xportal.idv.tw/),且這個軟體也是全功能免費,可以自由下載(免註冊)。
==========================
全功能且免費下載分享的企業入口網
PHP + Mysql 建置
http://www.xportal.cc/
===========================

fox_nico

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #13 於: 2004-08-05 10:42 »
引述: "xportal"
引述: "fox_nico"

我們公司就是用PHP+ORACLE.
當然,不只是留言版.
所以依大家的討論看來.用ORACLE是正確的(因為MYSQL只適合在小型的資料庫,如:留言版)
但我們有近萬筆的資料.約有20-30個TABLE.
看來是用ORACLE比較好囉?

小兒科
我們寫的這個入口網是用PHP+Mysql,目前有二佰多個table,配銷系統完成後會有三佰多個table。
有空過來看看,有全天免註冊開放的範例網站(http://eip.xportal.idv.tw/),且這個軟體也是全功能免費,可以自由下載(免註冊)。

哇.第一次看到PHP比ASP寫得還好.
太厲害了... @@

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #14 於: 2004-08-05 10:56 »
引述: "fox_nico"
引述: "xportal"
引述: "fox_nico"

我們公司就是用PHP+ORACLE.
當然,不只是留言版.
所以依大家的討論看來.用ORACLE是正確的(因為MYSQL只適合在小型的資料庫,如:留言版)
但我們有近萬筆的資料.約有20-30個TABLE.
看來是用ORACLE比較好囉?

小兒科
我們寫的這個入口網是用PHP+Mysql,目前有二佰多個table,配銷系統完成後會有三佰多個table。
有空過來看看,有全天免註冊開放的範例網站(http://eip.xportal.idv.tw/),且這個軟體也是全功能免費,可以自由下載(免註冊)。

哇.第一次看到PHP比ASP寫得還好.
太厲害了... @@


你的說法很好笑...
本來就可以寫的比 ASP 好...
只是看程式設計師功力夠不夠而已.....
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

fox_nico

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #15 於: 2004-08-05 11:04 »
引述: "Darkhero"
引述: "fox_nico"
引述: "xportal"
引述: "fox_nico"

我們公司就是用PHP+ORACLE.
當然,不只是留言版.
所以依大家的討論看來.用ORACLE是正確的(因為MYSQL只適合在小型的資料庫,如:留言版)
但我們有近萬筆的資料.約有20-30個TABLE.
看來是用ORACLE比較好囉?

小兒科
我們寫的這個入口網是用PHP+Mysql,目前有二佰多個table,配銷系統完成後會有三佰多個table。
有空過來看看,有全天免註冊開放的範例網站(http://eip.xportal.idv.tw/),且這個軟體也是全功能免費,可以自由下載(免註冊)。

哇.第一次看到PHP比ASP寫得還好.
太厲害了... @@


你的說法很好笑...
本來就可以寫的比 ASP 好...
只是看程式設計師功力夠不夠而已.....


呵呵.見笑了.
因為我看到做的很龐大的網站都是以ASP寫的較多,像PHP做成這樣的,我真的第一次看過.功力真是不凡!!^^"

jasonkey

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #16 於: 2004-09-10 13:29 »
關於php
http://shopping.pchome.com.tw/index.php
http://listings.eachnet.com/fu/cat/cat1.php?id_parent=31
關於mysql與oracle
不知所謂多少筆record才叫大型資料庫
mysql勝過oracle的地方太多,
最重要的:mysql 免費,tool 也是免費,mysql 易學(免費的教學網站一堆...),mysql易設定安裝備份.......

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5401
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #17 於: 2004-09-10 15:09 »
想想看, 如果 mysql 真的這麼的好, 為什麼 oracle 還是賣的出去? 為什麼那些公司在考慮資料庫的時候, 最後的決定並不是使用 mysql (或者連考慮都沒考慮...)?

東西好不好用, 要看用的人與用途而定....

mysql 又小又快, 學起來也簡單.... 但是在某些功能上, 不是沒有就是比不上 oracle, 如果你注重的是並不是這些缺少的部分,  那的確沒什麼理由不用 mysql 而要改用 oracle, 反之, 如果你注重的地方,  mysql 很難做到, 或者做不到時, 那麼.... mysql 對你而言, 還會是好用嗎?

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4052
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #18 於: 2004-09-10 15:23 »
電腦的比較沒有何謂誰比較好!?

大部分只有對什麼比較熟悉,對 Windows 熟的人當然推薦 Windows,熟 Linux 推薦 Linux,不精通另外一個領域當然就不喜歡。

本來我也是 MySQL 派的,可是現在使用到現在,使用到一些特殊功能就發現了 MySQL 的無力,不過在 4.x 5.x 有加強,所以就還是先繼續支持吧 ^^
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

Apache

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #19 於: 2004-09-10 15:33 »
MySQL之所以快是因為它的核心功能作的很簡單, 只能說是陽春而已.
等MySQL加上 trigger, nested sql 或 stored procedure 等一些較
進階的功能後,再在來評估MySQL與Oracle 孰優孰劣,會比較公平些.

總之, 用Oracle 或 MySQL 還是看需求與預算來決定

xportal

  • 可愛的小學生
  • *
  • 文章數: 16
    • 檢視個人資料
    • http://xportal.cn/
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #20 於: 2004-09-10 18:14 »
引述: "Apache"
MySQL之所以快是因為它的核心功能作的很簡單, 只能說是陽春而已.等MySQL加上 trigger, nested sql 或 stored procedure 等一些較
進階的功能後,再在來評估MySQL與Oracle 孰優孰劣,會比較公平些.
總之, 用Oracle 或 MySQL 還是看需求與預算來決定


Mysql4.1以上的版本,已具有 nested sql和全面的支援UTF-8的功能了,Xportal系統用的很多,至於stored procedure的功能,Mysql 5.0則會有trigger,stored procedure,function等等的功能,這些功能基本上我是不會採用,理由如下:
stored procedure的功能是可以增加執行的速度,可是Mysql本身的速度已經很快,使用了這個功能之後不會提升太多的效能,這是Mysql官方站台的說明。

trigger,stored procedure,function 這些功能都是可以由PHP程式來執行,會比較靈活,比較好控制,沒有必要這麼依賴資料庫。而且使用了這些功能之後,往後的資料庫移植會發生問題。

至於使用Oracle資料庫的問題,我的看法是這樣的,砍一棵樹,可以砍倒就可以了,就以最輕鬆的方式來做吧。

撇開錢的因素,如果您是要寫一個軟體給營業額上千億的集團來說,可能會需要用到的功能比較多,Oracle會比較合適,不然您只是寫一些佰來萬售價的軟體,是沒有必要用到Oracle的,因為Oracle在安裝維護和使用設計上的學習都是非常費時的。

這是個人的看法。
==========================
全功能且免費下載分享的企業入口網
PHP + Mysql 建置
http://www.xportal.cc/
===========================

jaja

  • 可愛的小學生
  • *
  • 文章數: 1
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #21 於: 2004-09-10 18:25 »
http://taiwan.cnet.com/enterprise/technology/0%2C2000062863%2C20048841-20000753c%2C00.htm
上面有一句google都是用mysql,不知真的假的
不論oracle或mysql效能如何,
企業AP真的需要ORACLE有MYSQL沒有的功能嗎?(MYSQL4.X及MYSQL5.X已補進很多功能)
基本上oracle有商業行銷(IT主管們有幾個聽過MSYQL或懂一點MYSQL)
ORACLE有支援維護(一碰到問題可以找ORACLE,只要有付費)
ORACLE有一堆課給IT部門上
這些都與資料庫本身沒關
IT主管又不是花自己的錢,而且這一點"小錢"對這些企業根本不是問題,所以IT主管會選擇出事可以找得到專家的ORACLE
所以會有公司用DEVELOP 2000就是這樣

Apache

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #22 於: 2004-09-11 12:16 »
看完 xportal 與 甫註冊的 jaja 的回應, 想了想, 還是決定回覆一下(雖然打字很辛苦 :-? )...

先從 trigger, nested sql 與 stored procedure 來說,
一個database 所具有功能的存在,一定有它的需求才會被開發出來的.
的確,trigger, nested sql 與 stored procedure 的功能是可以透過developer 的程式碼來完成.
一個資料量不大的database, 或許可以勝任愉快,游刃有餘.
但當database schema 更改或需求增加或資料量驟增或隨著programmer的人事異動,
client-side的程式碼很難不因應這個變化而不作修改.
另一種情況是,在隨著developer team 人員的增加,在共同開發一個databse project 的狀況下,
如何維持client-side ap source code 的一致性與維護眾多不同權限 users 之存取資料的安全性(security)?

trigger, nested sql 與 stored procedure 便是一個很好的solution.
trigger 可以在data 一異動時便能作一些資料一致性的檢查,給予client-side ap一些提示或警告.
(ps. 但太複雜的檢查還是可能會影響database performance,所以如何設計與取捨, 就看實際狀況與需求了.)

nested sql, 它無疑也是提升效能與減輕developer working load的妙方,
舉個簡單的例子來說

原始Data如下:
===================================
ITEM DATE1 DATE2 PRICE
===================================
A 2000/11/10 2000/11/20 6.85
A 2000/12/15 2000/12/25 5.66
B 2000/10/18 2000/11/23 10.27
B 2000/12/20 2000/12/30 15.32
===================================

要找出每個ITEM中DATE1值最大的那筆記錄
輸出結果為:
===================================
ITEM DATE1 DATE2 PRICE
===================================
A 2000/12/15 2000/12/25 5.66
B 2000/12/20 2000/12/30 15.32
===================================

在沒有支援nested sql 的database,那麼你只能土法大煉鋼(有興趣的人可以自己試試).
不僅累且效能不佳(套句台灣俚語:做到流汗,嫌到流涎).至於不佳到什麼程度,
還得看developer的素質與資料量大小而定.換句話說,就是source code 並無品質保證可言.
在有支援nested sql 的database,只要一段sql command 便可完成

代碼: [選擇]
SELECT * FROM data T1
WHERE T1.date1= (select max(T2.date1) from data T2 where T1.ITEM = T2.ITEM)
ORDER BY TI.ITEM

在database-side的最佳化下,nested sql 可以得到最佳的效能,另一方面也避免掉了
developer不良程式碼的問題. 再者,這段 nested sql 亦可幾乎不動的改成stored procedure.
而得到的效能也勢必更好.

再來說說 stored procedure,它同樣也是提升效能,增加安全性與保證程式碼品質的一個良方.
Stored procedure 在存到database server之前,必須先經過database 的編譯, 編譯後的碼
是經過databse server 優化過的.這個方法可以減少client ap 在每次要傳送 sql command 時
都要給database 先編譯過才執行的步驟,這是它快的主因之一.也因為它的sql command 是存在database server,
client ap developer 只需要傳遞參數給database, database處理完後把結果回傳給client ap,
因為它為眾多users, developers, applications 所共用,
所以它往往是由較厲害的develoer 或DBA所撰寫, 同時,其所寫的程式碼也可能被team developers
所challenge,在這種open 的環境下,stored procedure 的品質得到了的保障, 這是它快的主因之二.
stored procedure 是以sever-side cursor方式在運作,這種方式的好處在當client ap 在需要處理大量資料時,
可以在stored procedure裡就處理掉,它避免了將大量資料在網路上
client 與 server 來回互傳而delay與發生網路資料壅塞的狀況, 這是它快的主因之三.

至於在安全性方面,就不多講了.簡單地說,stored procedure 因為是存在database sever,
所可以做權限控管, database 裡的資料可不是每個人都可以存取的,
所牽涉到的stored procedure當然也不能每個人可以呼叫的.

如xportal 所言『stored procedure的功能是可以增加執行的速度,可是Mysql本身的速度已經很快,
使用了這個功能之後不會提升太多的效能,這是Mysql官方站台的說明。』我想,效能應該是不嫌多的,
您不正也是因為MySQL 的高效能而鍾意於它嗎? 也或許,您看完我上方的粗略的說明,會重新思考Mysql官方站台的說明.

就我在寫server-side ap 的經驗,在開發時要考慮很多狀況,比如說connection pool, thread pool,
i/o pool, global memory access 與在multi-thread 運作環境下的一些存取動作的非同步控制等.
我並沒有看過MySQL source code, 但開發一個database 應該也脫離不了那些技術,所以我才說
『MySQL之所以快是因為它的核心功能作的很簡單』. 那是依我的經驗與觀察歷年各大廠database benchmark而得的.
對加入這些新功能的MySQL 的release,我也是在等待,因為我自己也想用.
而我也會觀察新版的 benchmark是否與現在的MySQL 4.0一樣遙遙領先.

在我的觀念裡, 不管是營業額上千億的集團或小至不到十人的小公司,能滿足需求的系統就是好系統.
小公司因需求當然可以用到Oracle, 大公司(如jaja 同學所說的Google)或許只要MySQL 就夠了,並無定法可言.
一個database 產品要因應廣大不同的客戶需求,當然會提供所需的功能, 新版的MySQL不也逐漸加入這些功能了嗎?
或許你功力很強,可以自力完成所欠缺的功能,並不代表其它的developer或user也可以做的到.
一個公司在決定採用Oracle, DB2, SQL Server 乃至於MySQL,我想都有經過一番考量.公司在採用資料庫的solution時,
並不會只考慮單單一個資料庫而已 (除了雙腳長滿肥肉,腦袋裝滿肥油的主管外),而是資料庫所帶來的整個解決方案,
比如說備援, 支援維護, ERP或電子商務乃至於專屬的開發工具(如Power Builder, Informix 4GL, Developer 2000)所帶來的便利性等,
而不是單單一個很漂亮的benchmark.

拉哩拉雜寫的一堆,只是就事論事,並無意挑起筆戰,只是分享自己多年來在工作上所獲的心得.
也歡迎各方大德有建議性的指教. :D

duncanlo

  • SA 苦力組
  • 俺是博士!
  • *****
  • 文章數: 7312
    • 檢視個人資料
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #23 於: 2004-09-12 11:48 »
除了DB本身的效能之外,
也要考慮將來DB的備份備援等的成本...

開車很舒服,但台北市停車時,騎機車是比較方便啦!!
就像上面某人說,針對解決方案跟預算來選擇那個是佳的.

有人用就有未來,
沒人用將來何時原廠會停止support就沒人知道了...

ethanliu

  • 懷疑的國中生
  • **
  • 文章數: 41
    • 檢視個人資料
    • http://www.creativecrap.com
[閒聊]PHP搭配ORACLE好還是MYSQL?
« 回覆 #24 於: 2004-09-14 19:14 »
引述: "Apache"

原始Data如下:
===================================
ITEM DATE1 DATE2 PRICE
===================================
A 2000/11/10 2000/11/20 6.85
A 2000/12/15 2000/12/25 5.66
B 2000/10/18 2000/11/23 10.27
B 2000/12/20 2000/12/30 15.32
===================================

要找出每個ITEM中DATE1值最大的那筆記錄
輸出結果為:
===================================
ITEM DATE1 DATE2 PRICE
===================================
A 2000/12/15 2000/12/25 5.66
B 2000/12/20 2000/12/30 15.32
===================================

在沒有支援nested sql 的database,那麼你只能土法大煉鋼(有興趣的人可以自己試試).
不僅累且效能不佳(套句台灣俚語:做到流汗,嫌到流涎).至於不佳到什麼程度,
還得看developer的素質與資料量大小而定.換句話說,就是source code 並無品質保證可言.
在有支援nested sql 的database,只要一段sql command 便可完成

代碼: [選擇]
SELECT * FROM data T1
WHERE T1.date1= (select max(T2.date1) from data T2 where T1.ITEM = T2.ITEM)
ORDER BY TI.ITEM



MySql 雖然尚不支援 nested sql 不過練土的方式還是因人而異
上面的結果同樣可用一段 sql command 完成

代碼: [選擇]
SELECT d1.*
FROM `data` AS d1 LEFT JOIN `data` AS d2 ON d1.item=d2.item AND d1.date1<d2.date1
WHERE d2.item IS NULL


Orale 與 MySQL 相比較的話上面大家都說的很清楚了
除了規模之外,跟發展的 TEAM 的熟悉度也是相關的