MySQL的5.0和8.0版本區別

目錄

1、MySQL版本-- 》5版本

1.1、InnoDB存儲引擎

1.2、存儲過程和觸發器

1.3、視圖

1.4、增強的查詢優化器

1.5、增強的索引支持

1.6、外鍵支持

1.7、分區表和分布式查詢

2、MySQL版本-- 》8版本

2.1、性能

2.2、字符編碼改變

2.3、持久化保存

2.4、隱藏索引和降序索引

3、MySQL 5和MySQL 8的區別

3.1、JSON支持:

3.2、插件化架構:

3.3、性能提升

3.4、安全增強

3.5、支持的SQL語法

3.6、Unicode支持

3.7、索引算法改進

4、配置及兼容性

4.1、驅動與連接配置

4.2、移除特性

總結


前言

????????MySQL是一款開源、免費、快速穩定的關系型數據庫,被廣泛地應用在大量的Web應用程序中。

當執行一條sql的時候,會經過以下流程:

關于兩個不同版本的區別,可參考如下:


1、MySQL版本-- 》5版本

發布于2005年。

以下是MySQL 5的一些主要特點和功能:

1.1、InnoDB存儲引擎

????????MySQL 5引入了InnoDB存儲引擎作為默認的事務引擎,提供了ACID(原子性、一致性、隔離性和持久性)事務支持,以及行級鎖定和多版本并發控制(MVCC)等高級特性。

1.2、存儲過程和觸發器

????????MySQL 5引入了存儲過程和觸發器的支持,使得可以在數據庫中使用更復雜的業務邏輯和數據處理操作。

1.3、視圖

????????MySQL 5引入了視圖的支持,允許用戶創建虛擬表,從而簡化查詢和數據訪問。

1.4、增強的查詢優化器

????????MySQL 5對查詢優化器進行了改進,提供了更好的查詢執行計劃生成和查詢性能。

1.5、增強的索引支持

????????MySQL 5引入了更多類型的索引,包括全文索引、B-Tree索引哈希索引,以提高查詢效率。

1.6、外鍵支持

????????MySQL 5開始支持外鍵約束,使得在多表關聯查詢和數據完整性方面更加靈活和方便。

1.7、分區表和分布式查詢

????????MySQL 5引入了分區表的支持,可以將大型表分割成若干個子表,以提高查詢和維護的效率。此外,MySQL 5還引入了分布式查詢的功能,允許在多個MySQL實例之間進行查詢操作。

注意:?MySQL 5是一個大版本,如MySQL 5.0、MySQL 5.1、MySQL 5.5等。每個小版本都對功能和性能進行了不同程度的改進和優化。


2、MySQL版本-- 》8版本

? ? ? ? MySQL 8于2018年發布,引入了眾多新功能和改進,以提供更高性能、更強安全性和更豐富的功能。

2.1、性能

????????MySQL 8 采用了新版InnoDB存儲引擎,具有更好的性能表現。官方表示MySql 8.0的速度要比MySql5.7快2倍,特別是在高并發與大數據的環境下,其性能迅速提升,支持高級功能如JSON、空間索引全文索引,從而可以提供更好的查詢體驗。

InnoDB 引擎在 8.x 中默認啟用 多線程日志刷盤 和 動態緩沖池調整,顯著提升寫入性能。

2.2、字符編碼改變

????????從MYSQL8.0開始,使用utfmb4作來MySQL的默認字符集,并支持Unicode 9 ,默認字符集將從 latin1 改為 utf8mb4,默認定序將從latin1_swedish_ci 改為 utf8mb4_800_ci_ai;

????????支持存儲更廣泛的Unicode字符,包括表情符號和特殊字符等。

2.3、持久化保存

????????MySQL8.0 新增 SET PERSIST 的命令,該命令的配置值保存到數據目錄下的mysqld-auto.cnf文件中,待重啟后,讀取該文件,用其中的配置覆蓋缺省的配置文件,補充了SET?GLOBAL?命令只能臨時生效的不足;

2.4、隱藏索引和降序索引

????????可以將索引通過命令設置未隱藏或顯示。對于被隱藏的索引,它不會被查詢優化器所使用,我們可以使用這一功能,對相關的查詢進行性能調試,通過 隱藏 或 顯示,分析數據庫性能差異的原因,同時也可以去除無效的索引。

1:通過"ALTER INDEX ... INVISIBLE"可臨時禁用索引進行性能調試。

2:?降序索引 優化了?"ORDER BY ... DESC"查詢的效率。

-- 降序索引
CREATE INDEX idx_salary_desc ON employees (salary DESC);-- 隱藏索引(可用于測試索引效果)
ALTER TABLE employees ALTER INDEX idx_name INVISIBLE;

3、MySQL 5和MySQL 8的區別


以下是MySQL 5和MySQL 8之間的一些主要區別:

3.1、JSON支持:

????????MySQL 5對JSON支持較弱,只能存儲和查詢JSON字符串,而MySQL 8引入了更強大的JSON功能,包括對JSON文檔的索引和查詢功能。

????????MySQL 8 提供 原生 JSON 數據類型 和豐富的操作函數(如 “JSON_EXTRACT”、“JSON_SET”),支持索引加速查詢。

如下圖所示:

-- MySQL 5:需手動解析字符串
SELECT * FROM users WHERE JSON_UNQUOTE(JSON_EXTRACT(profile, '$.age')) > 30;-- MySQL 8:直接使用路徑查詢
SELECT * FROM users WHERE profile->"$.age" > 30;
-- MySQL 8.0 JSON示例
CREATE TABLE products (id INT PRIMARY KEY,details JSON
);INSERT INTO products VALUES 
(1, '{"name": "Laptop", "specs": {"cpu": "i7", "ram": "16GB"}}');SELECT id,details->>"$.name" as product_name,details->>"$.specs.cpu" as cpu
FROM products;

3.2、插件化架構:

????????MySQL 8引入了插件式存儲引擎架構,使得用戶可以根據具體需求選擇不同的存儲引擎,比如InnoDB、MyISAM等。而MySQL 5則相對較為有限,大多數情況下使用的是InnoDB引擎。

3.3、性能提升

MySQL 8在性能方面進行了許多改進,包括更好的查詢優化器、索引算法的改進、并行查詢等,從而提供更高的查詢速度和吞吐量。

3.4、安全增強

????????MySQL 8引入了許多安全增強功能,如更加嚴格的密碼策略、默認啟用的SSL/TLS支持、資源組和權限控制的增強等,以提供更高的數據安全性。

3.5、支持的SQL語法

????????MySQL 8增加了對一些新的SQL語法的支持,如窗口函數和CTE(公共表達式,即WITH語句),使得復雜查詢更加方便和靈活。

-- MySQL 8.0窗口函數示例
SELECT employee_name,department,salary,RANK() OVER (PARTITION BY department ORDER BY salary DESC) as dept_rank
FROM employees;
-- MySQL 8.0 CTE示例
WITH dept_stats AS (SELECT department, AVG(salary) as avg_salaryFROM employeesGROUP BY department
)
SELECT * FROM dept_stats WHERE avg_salary > 5000;

3.6、Unicode支持

????????MySQL 8默認使用utf8mb4字符集,支持存儲更廣泛的Unicode字符,包括表情符號和特殊字符等。

-- MySQL 8.0默認支持完整Unicode
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(100)  -- 默認utf8mb4,支持emoji等
);

3.7、索引算法改進

????????MySQL 8引入了更高效的索引算法(R-tree和B-tree索引的改進),從而提升空間數據類型和文本數據類型的查詢性能。


4、配置及兼容性

4.1、驅動與連接配置

驅動類:MySQL 5使用com.mysql.jdbc.Driver,而MySQL 8需改用com.mysql.cj.jdbc.Driver。

連接URL:MySQL 8需在JDBC URL中指定時區參數(如?serverTimezone=UTC),否則可能報錯

4.2、移除特性

MySQL 8.0移除了一些舊特性,如:

  • 不再支持password()函數

  • 移除了查詢緩存,可參考:Mysql中select查詢語句的執行過程_mysql查詢過程-CSDN博客https://blog.csdn.net/weixin_50055999/article/details/148472938?spm=1011.2415.3001.5331


總結

????????MySQL 8.0相比5.0在性能、功能、安全性和SQL標準兼容性方面都有顯著提升,特別是窗口函數、CTEJSON支持使得復雜查詢和半結構化數據處理更加方便。


參考文章:

1、數據庫系列---mysql5和8的區別_mysql8與mysql5區別-CSDN博客https://blog.csdn.net/weixin_42978994/article/details/133676940?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522691a7d4f3f5f160a593559052b73019e%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=691a7d4f3f5f160a593559052b73019e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-133676940-null-null.142^v102^pc_search_result_base1&utm_term=mysql8%E5%92%8Cmysql5%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187

2、MySQL 5和MySQL 8的區別_mysql5-CSDN博客https://blog.csdn.net/weixin_72610956/article/details/133795411?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522691a7d4f3f5f160a593559052b73019e%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=691a7d4f3f5f160a593559052b73019e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-133795411-null-null.142^v102^pc_search_result_base1&utm_term=mysql8%E5%92%8Cmysql5%E7%9A%84%E5%8C%BA%E5%88%AB&spm=1018.2226.3001.4187

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87618.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87618.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87618.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python實現簡單的地圖繪制與標記20250705

用python語言繪制顯示范圍不大于上海地區的地圖 您的代碼實現了一個 上海武館地理信息系統,主要功能是通過可視化地圖展示上海各區的傳統武術館信息。 通過和deeps對話一晚上實現的,我就是描述修改 高德的api key我搞了一會,平時很少接觸密…

Qt開發:QListWidget的介紹和使用

文章目錄 一、QListWidget的簡介二、QListWidget的基本用法三、QListWidget的數據操作2.1 插入數據2.2 查找數據2.3 選項設置 四、QListWidget的信號與槽 一、QListWidget的簡介 QListWidget 是 Qt 框架中用于顯示和操作條目列表的控件,它是 QListView 的一個子類&a…

React Native 親切的組件們(函數式組件/class組件)和陌生的樣式

寫多了taro, 看見react native中的組件好親切啊,幾乎一模一樣。 一、函數式組件 — 常用 1)無狀態,每次刷新都是生成一個新的狀態 2)基于狀態變化的管理 3)簡潔,代碼少,易于服用 import Reac…

Spring boot之身份驗證和訪問控制

本文筆記跟隨于遇見狂神說老師的視頻 一.SpringSecurity(安全) 1.相關概念 在web開發中,安全第一位,有簡單的方法,比如:攔截器,過濾器 也有安全框架,比如:SpringSecu…

C#使用開源框架NetronLight繪制流程圖

之前使用MindFusion.Diagramming繪制流程圖確認很方便,只能試用版,如果長期使用,需要收費。 C#使用MindFusion.Diagramming框架繪制流程圖(2):流程圖示例_c# 畫流程圖控件-CSDN博客 這里找一個簡易開源框架NetronLight,GIT下載地…

支持向量機(SVM)在腦部MRI分類中的深入應用與實現

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#, Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

AtCoder AT_abc413_c [ABC413C] Large Queue 題解

題目大意 有一個初始為空的序列 A A A, Q Q Q 次操作分為兩類: 第一類:將 c c c 個 x x x 放到 A A A 的末尾。第二類:將前 k k k 個數的和輸出并移除它們。 思路 這是一個求和問題,想到的第一個思路是前綴和…

「源力覺醒 創作者計劃」_文心大模型開源:開啟 AI 新時代的大門

在人工智能的浩瀚星空中,大模型技術宛如一顆璀璨的巨星,照亮了無數行業前行的道路。自誕生以來,大模型憑借其強大的語言理解與生成能力,引發了全球范圍內的技術變革與創新浪潮。百度宣布于 6 月 30 日開源文心大模型 4.5 系列&…

Git 怎么判斷是否沖突?

📌 [Q&A] Git 怎么判斷是否沖突? Git 使用的是三路合并算法(Three-way Merge),它比較: 共同祖先提交(base) 當前分支的改動(ours) 被合并分支的改動&am…

在sf=0.1時測試fireducks、duckdb、polars的tpch

首先,從https://github.1git.de/fireducks-dev/polars-tpch下載源代碼包,將其解壓縮到/par/fire目錄。 然后進入此目錄,運行 SCALE_FACTOR0.1 ./run-fireducks.sh,腳本會首先安裝所需的包,編譯tpch的數據生成器&#x…

AWS多賬號管理終極指南:從安裝配置到高效使用

引言:為什么需要多賬號管理? 在云計算時代,企業使用多個AWS賬號已成為最佳實踐。根據AWS Well-Architected Framework,多賬號架構可以: 實現環境隔離(生產/測試/開發)滿足不同業務單元的安全要求簡化資源管理和成本分配符合合規性要求(如SOC2、ISO27001)本文將手把手…

UE5音頻技術

1 . 調制器 Modulator 調整參數 調制器可以使聲音每次音高都不一樣 2. 隨機 節點 3. 混音器 Mixer 混合兩個音頻 4. 串聯器 Concatenator 按循序播放 5.多普勒 Doppler 根據距離音頻變化 6.包絡線 Enveloper 武器充能發射 7.混響

創客匠人視角:創始人 IP 打造與知識變現的培訓賦能體系

在知識付費行業進入精耕期的當下,為何部分企業投入大量培訓卻收效甚微?創客匠人 CEO 老蔣通過服務 5W 知識博主的經驗指出:唯有將創始人 IP 思維與培訓體系深度融合,才能讓培訓成為知識變現的 “轉換器”。一、內訓體系重構&…

基于Java+SpringBoot的三國之家網站

源碼編號:S591 源碼名稱:基于SpringBoot的三國之家網站 用戶類型:雙角色,用戶、管理員 數據庫表數量:20 張表 主要技術:Java、Vue、ElementUl 、SpringBoot、Maven 運行環境:Windows/Mac、…

推薦算法系統系列五>推薦算法CF協同過濾用戶行為挖掘(itembase+userbase)

注:此文章內容均節選自充電了么創始人,CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》(跟我一起學人工智能)【陳敬雷編著】【清華大學出版社】 配套視頻 推薦算法系統實戰全系列精品課【陳敬雷】 文章目錄 推薦算…

pytest之fixture中yield詳解

1. fixture——yield介紹 fixture的teardown操作并不是獨立的函數,用yield關鍵字呼喚teardown操作。前面通過fixture實現了在每個用例之前執行初始化操作,那么用例執行完之后,如需要清除數據(或還原)操作,…

Nginx 動靜分離原理與工作機制詳解:從架構優化到性能提升

前言:在 Web 應用架構不斷演進的今天,如何高效處理日益增長的訪問量和復雜的業務邏輯,成為開發者必須面對的挑戰。當我們在瀏覽器中打開一個網頁,那些直觀可見的 HTML 頁面、精美絕倫的圖片、流暢運行的 JavaScript 腳本&#xff…

介紹electron

一、Electron 是什么? Electron 是一個基于 Chromium 和 Node.js 的框架,允許開發者使用前端技術(HTML/CSS/JavaScript)構建原生桌面應用。其核心優勢在于: 跨平臺:一次開發,生成 Windows、ma…

DeepSeek與詭秘之主

1、大模型像個腐儒 其實從大模型的訓練方式來看,它算不上天賦異稟。尤其在成長階段,大模型那種種令人驚艷的表現,足夠讓人誤以為這是個天才。 可人這種生物,注定是貪婪的。在大模型成長后期,伴隨著各種技巧的驗證&…

動手實踐OpenHands系列學習筆記5:代理系統架構概述

筆記5:代理系統架構概述 一、引言 AI代理系統是一種能夠自主執行任務的智能軟件架構,OpenHands作為AI驅動的軟件開發代理平臺,擁有完整的代理系統架構設計。本筆記將探討AI代理架構的基本原理,并通過分析OpenHands核心架構&…