Mysql

ETA:將 Oracle SQL 查詢轉換為 MySQL

  • July 23, 2012

任務:用 MySQL 替換 Oracle 11g

目前設置:

  • Oracle 11g SE 一
  • 約80桌
  • 儲存過程,PL/SQL 已經到位,但超出了這個問題的範圍
  • 客戶端應用程序不使用像 JDBC 這樣的通用訪問技術,而是使用 OCI 庫
  • 應用程序有大約 500 個針對 Oracle 的固定 SQL 查詢

管理層現在希望概述遷移草案。不要為架構或數據遷移而煩惱。

我試圖粗略估計翻譯 500 個查詢所花費的時間。自然,這些查詢的範圍從非常簡單的 INSERT/SELECT 到具有子查詢、多個 JOIN 和表達式的相當複雜的查詢:

TRUNC(EXTRACT(DAY FROM (afs.next - TO_TIMESTAMP_TZ('1970-01-01 00:00:00 UTC',
'YYYY-MM-DD HH24:MI:SS TZR'))) * 86400 + EXTRACT(HOUR FROM (afs.next - 
TO_TIMESTAMP_TZ('1970-01-01 00:00:00 UTC', 'YYYY-MM-DD HH24:MI:SS TZR'))) 
* 3600 + EXTRACT(MINUTE FROM (afs.next - TO_TIMESTAMP_TZ('1970-01-01 00:00:00 UTC',
'YYYY-MM-DD HH24:MI:SS TZR'))) * 60 + EXTRACT(SECOND FROM (afs.next - 
TO_TIMESTAMP_TZ('1970-01-01 00:00:00 UTC', 'YYYY-MM-DD HH24:MI:SS TZR')))) as \"next\"

提示:必須從現有查詢中讀出此類表達式的含義和目的,因為在創建時沒有人關心記錄實現的細節。

我完全知道可能存在無法按原樣翻譯的查詢,因為 MySQL 可能不支持某些東西。

問題:您能否就您認為專家能夠達到的預期“吞吐量”給出一個粗略的暗示?專家將是精通 MySQL、Oracle 和應用程序的人。您認為“翻譯”單個平均查詢並在目標數據庫中簡單地手動測試它需要多少時間?

請忽略整個應用程序所需的測試。不要認為我們必須事先設置目標模式。歡迎提供有關失敗遷移和災難性問題的提示和故事。

謝謝!

為什麼要遷移到 MySQL?你考慮過 PostgreSQL 嗎?我之所以這麼問,是因為 PostgreSQL 與 Oracle 的功能幾乎兼容,並且會使遷移更簡單一個數量級。

也就是說,翻譯 80 個表定義和 500 個查詢可能需要一個月左右的時間。簡單的 CRUD 語句將受限於專家的打字速度,但如果您正在執行任何聚合或其他 BI 類型的工作,則可能需要一天的時間才能使一個語句正常工作。您最好簡單地記錄每個查詢,然後使用 MySQL 慣用語從頭開始重寫它們,而不是嘗試翻譯它們。

引用自:https://dba.stackexchange.com/questions/21280