搜尋
首頁資料庫mysql教程8 個不得不說的 MySQL 陷阱

Mysql安裝簡單,速度較快,功能豐富。另外它還是開源運動的標桿,它的偉大成就向我們展示了一個成功的公司是可以建立在開源程式碼之上的。

然而用過mysql的人都曾對著顯示器揮舞過拳頭。但你不可能發明一種每秒能保存成千上萬行網路數據,並且一點錯誤都沒有的技術吧。

為了在這個夏天躁起來,我們列舉了8個抱怨開源關係型資料庫的理由。以下列舉的理由中不僅限於 MySQL,有些是針對關係型資料庫的。如果我們沒有理清楚關係型資料庫和 MySQL,我們將會永遠陷入90年代的思想。我們需要推倒然後重建這些。或者我們轉向使用一個最近流行的,存在時間沒有長到可以列出一堆像下面一樣的理由的資料庫。

根深蒂固的bugs

任何大的軟體包都有 bug。但稍微深入了解一下,就會發現和 Mysql 相關的 bugs 自成系統。突然你需要留心,因為 NULL 並不是以同樣的方式出現,外鍵約束也沒有像你想像的那樣執行,連主鍵自動增長也會出錯。

小問題大量存在,而且並不總是可以修復,這就是為什麼有些人保持一個清單。還好 MySQL 維護著一個非常好的 bug 報告系統,讓我們可以知道我一些我們無法想像的事情,知道其他人也正在經歷同樣的磨難。

關係表的不靈活性

關係表具有條理性,條理性是好的-但是,它使得程式設計師必須編造或硬塞一些資料到已經定義好模式的列中。 NoSQL開始越來越受到歡迎的原因之一,就是它為程式設計師提供了足夠的彈性,來加速資料庫的使用。如果一個街道地址需要增加一行,那麼,你可以將它輕鬆地插入到一個NoSQL文件中。如果你想新增一個完整的新的資料區塊,無論它包含什麼內容,文件模型也可以原封不動地接受你的數據,而不必改為它要求的資料格式。

試想一下,你用整數格式建立了一個全部是郵編的表格。這個表是十分有效率的,它執行的規則也很好。突然一次,有人上傳了一個使用了連字符的九位數郵編。或者還有可能,你得到了一位來自加拿大客戶的信件,上面寫有郵遞區號。

這時,一切都亂了。老闆要求網站要在幾小時內恢復正常運作。然而,現在已經沒有時間來重建資料庫。程式設計師可以做什麼?或許,可以使用駭客手段把加拿大郵遞區號由base64的數位格式改為base 10格式?或是設定一個使用轉義編碼的輔助表格,用來說明真正的郵遞區號或其他?誰知道呢?到處都有駭客,他們都是危險的。但你沒有時間搞定它。

MySQL的關聯規則讓每個人都誠實謹慎,但它能強制我們避免易受攻擊和欺騙的麻煩。

JOIN聯合查詢

曾幾何時,將資料分錶保存是電腦科學史上的偉大創新。分開後的表格不僅結構簡單,也簡化了使用。但它卻需要使用join語句來查詢。

sql透過一系列join建構的複雜查詢將開發者推入了困惑與絕望的深淵。而且儲存引擎也需要以最優的方式來有效率地解析join語句。開發者需要絞盡腦汁編寫查詢語句,然後資料庫對其進行解析。

這就是許多注重運行速度的開發者放棄資料分錶轉而使用不規範資料表的原因。不區分資料實體,將所有資料保存到一個大表中—以避免複雜的查詢。這樣確實很快,而且伺服器也不會耗盡記憶體。

磁碟空間現在很廉價。 8TB的磁碟已經在售,更大的也要上市了。我們不再需要為使用join而絞盡腦汁了。

分支的混亂

是的,一個可靠的、得到良好支援的MySQL分支,可以帶來競爭和選擇,但它也造成困惑和混亂。更糟的是,一個稱為MariaDB的MySQL分支,由Monty Widenius維護著。他同樣也在參與編寫MySQL。那麼,MariaDB才是真正獨立的值得我們擁護的嗎?還是它是MySQL?我們是否應該堅持使用由創建原始MySQL資料庫的組織運營的核心程式碼?或者我們應該加入那些被認為更聰明的,往往很酷的背叛者?

還有,我們該如何獲得關於相容性的資訊?一方面,我們被確信MariaDB和MySQL十分相似。另一方面,我們要相信有差異──不然為什麼大家都在爭論它?也許它們在性能和我們查詢的範圍內,在兩個陣營中工作方式相同?但也許他們不同-或將來會不同。

儲存引擎混亂

MySQL不是事實上的相同的資料庫;它由幾個資料庫組成,它們的大多數細節都被統一的表面所掩蓋。在開始的時候,有一個MyISAM引擎,它很快但在前後一致上不能做到完備。有時候你需要速度並且可以接受不一致的結果時是很好的。

當人們需要更多時,具備完整事務支援的InnoDB出現了。但這還不夠。現在,它可能有20種儲存引擎的選擇——這足以使一個資料庫管理員瘋狂。當然,有些時候在不同的儲存引擎之間切換而不必重寫你的SQL是很好的,但是切換後總是會帶來混亂。這個表格我選擇的引擎是 MyISAM 還是 innoDB 呢?或者,我決定輸出的資料是CSV格式的嗎?

獲利的動機

雖然MySQL 是一款成功的開源產品,但它仍然是一門生意,裡面滿是靠它獲得薪水的專業開發者。當大多數用戶持續享受開源許可證帶來的最佳體驗時,毫無疑問這家公司還在為賺取足夠的錢來維持營運而努力。這導致自由代碼在「社群版」和出售給企業的完整產品之間產生了奇怪的分岐。

你該付錢嗎?你在這裡賺了多少錢?在社群版之上開展經營行為是否公平?企業版中額外的功能,是否只是一個噱頭來引誘我們不斷付費呢?這至少說明一點,它是另一組需要回答的問題。選用哪個版本?遵照哪種許可證?選用它的哪個功能集?

原生 JSON 支援的缺乏

看 MySQL 的年齡最好的方法是安裝它,然後你會意識到需要添加更多的驅動程式使它可用。 MySQL 通常在 3306 連接埠上通信,它一般輸出的是它自己難以理解的格式化資料。如果你想讓你的程式碼和它通信,你必須加入另一層的程式碼,將 MySQL 的語言轉換成有用的東西。這些層的程式碼,以庫的形式分發,經常需要人們購買一個商業的許可證。

現代資料儲存層通常直接以 JSON 通訊。雖然 MySQL 和 MariaDB 現在有能力解析 SQL 中的 JSON 部分,但這還遠遠不夠好,原生的 JSON 介面已經在 CouchDB,MongoDB,或任何最新的工具中廣泛使用。

封閉來源和專有模組的興起

我說過 MySQL 是開源的嗎?它是,但除了一些在」開源核心「週邊開發的一些較新的、非開源的程式碼、專有模組。程式設計師需要吃飯,Oracle需要拿它的辛苦成果來換錢,這是商業的現實之一。它不像那些醫院,使用 MySQL 可以免費醫療照護。它不像那些農民,使用 MySQL 可以贈送食物。

要求 MySQL 永遠堅持在一個很高的標準是有點不公平的,因為開源的成功可能是個圈套。這是因為它開始可以免費,但這並不意味著它可以始終如此。如果企業需要許多新的功能,他們將不得不以這種或那種方式付費。有時向 Oracle 付費,比自己來寫程式碼便宜得多。有時商業的、不開源的程式碼是有意義的。事實不言而喻。

以上就是8 個不得不說的 MySQL 陷阱的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
MySQL:世界上最受歡迎的數據庫的簡介MySQL:世界上最受歡迎的數據庫的簡介Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL的重要性:數據存儲和管理MySQL的重要性:數據存儲和管理Apr 12, 2025 am 12:18 AM

MySQL是一個開源的關係型數據庫管理系統,適用於數據存儲、管理、查詢和安全。 1.它支持多種操作系統,廣泛應用於Web應用等領域。 2.通過客戶端-服務器架構和不同存儲引擎,MySQL高效處理數據。 3.基本用法包括創建數據庫和表,插入、查詢和更新數據。 4.高級用法涉及復雜查詢和存儲過程。 5.常見錯誤可通過EXPLAIN語句調試。 6.性能優化包括合理使用索引和優化查詢語句。

為什麼要使用mysql?利益和優勢為什麼要使用mysql?利益和優勢Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。描述InnoDB鎖定機制(共享鎖,獨家鎖,意向鎖,記錄鎖,間隙鎖,下一鍵鎖)。Apr 12, 2025 am 12:16 AM

InnoDB的鎖機制包括共享鎖、排他鎖、意向鎖、記錄鎖、間隙鎖和下一個鍵鎖。 1.共享鎖允許事務讀取數據而不阻止其他事務讀取。 2.排他鎖阻止其他事務讀取和修改數據。 3.意向鎖優化鎖效率。 4.記錄鎖鎖定索引記錄。 5.間隙鎖鎖定索引記錄間隙。 6.下一個鍵鎖是記錄鎖和間隙鎖的組合,確保數據一致性。

MySQL查詢性能差的常見原因是什麼?MySQL查詢性能差的常見原因是什麼?Apr 12, 2025 am 12:11 AM

MySQL查询性能不佳的原因主要包括没有使用索引、查询优化器选择错误的执行计划、表设计不合理、数据量过大和锁竞争。1.没有索引导致查询缓慢,添加索引后可显著提升性能。2.使用EXPLAIN命令可以分析查询计划,找出优化器错误。3.重构表结构和优化JOIN条件可改善表设计问题。4.数据量大时,采用分区和分表策略。5.高并发环境下,优化事务和锁策略可减少锁竞争。

您什麼時候應該使用複合索引與多個單列索引?您什麼時候應該使用複合索引與多個單列索引?Apr 11, 2025 am 12:06 AM

在數據庫優化中,應根據查詢需求選擇索引策略:1.當查詢涉及多個列且條件順序固定時,使用複合索引;2.當查詢涉及多個列但條件順序不固定時,使用多個單列索引。複合索引適用於優化多列查詢,單列索引則適合單列查詢。

如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)如何識別和優化MySQL中的慢速查詢? (慢查詢日誌,performance_schema)Apr 10, 2025 am 09:36 AM

要優化MySQL慢查詢,需使用slowquerylog和performance_schema:1.啟用slowquerylog並設置閾值,記錄慢查詢;2.利用performance_schema分析查詢執行細節,找出性能瓶頸並優化。

MySQL和SQL:開發人員的基本技能MySQL和SQL:開發人員的基本技能Apr 10, 2025 am 09:30 AM

MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能