【MySQL技術之旅】(5)該換換你的資料庫版本了,讓我們一同迎接8.0的到來哦!(初探篇)
theme: smartblue
本文已參與「掘力星計劃」,贏取創作大禮包,挑戰創作激勵金。
前提背景
MySQL關是一種關係資料庫管理系統,所使用的 SQL 語言是用於訪問資料庫的最常用的標準化語言,其特點為體積小、速度快、總體擁有成本低,尤其是開放原始碼這一特點,在 Web應用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關係資料庫管理系統)應用軟體之一。 本文主要講述壓縮版,因為安裝不太方便,但是功能效果都是一樣的!
MySQL8的介紹說明
MySQL 8.0是全球最受歡迎的開源資料庫的一個非常令人興奮的新版本,全面改進。一些關鍵的增強包括:
MySQL8的特性介紹
-
SQL視窗函式,公用表表達式,NOWAIT和SKIP LOCKED,降序索引,分組,正則表示式,字符集,成本模型和直方圖。
-
JSON擴充套件語法,新功能,改進排序和部分更新。使用JSON表函式,您可以使用JSON資料的SQL機制。
-
GIS地理支援。空間參考系統(SRS),以及SRS感知空間資料型別,空間索引和空間功能。
-
可靠性 DDL語句已變得原子性和崩潰安全,元資料儲存在單個事務資料字典中。由InnoDB提供支援!
-
可觀察性效能架構,資訊架構,配置變數和錯誤記錄的顯著增強。
-
可管理性遠端管理,撤消表空間管理和新的即時DDL。
-
安全 OpenSSL改進,新的預設身份驗證,SQL角色,分解超級特權,密碼強度等等。
-
效能 InnoDB在讀/寫工作負載,IO繫結工作負載和高爭用“熱點”工作負載方面明顯更好。
-
增加了資源組功能,通過將使用者執行緒對映到CPU,為使用者提供一個選項,以針對特定硬體上的特定工作負載進行優化
開發者需要了解的特性!
MySQL開發人員需要新功能,而MySQL 8.0在諸如SQL,JSON,正則表示式和GIS等領域提供了許多新的和更多需求的功能。開發人員也希望能夠儲存Emojis,因此UTF8MB4現在是8.0中的預設字符集。最後,資料型別得到了改進,在BINARY資料型別上進行了按位操作,並且改進了IPv6和UUID功能。
下面簡要介紹 MySQL 8 中值得關注的新特性和改進。
- 效能:MySQL8.0的速度要比MySQL5.7 快 2 倍。MySQL 8.0 在以下方面帶來了更好的效能:讀/寫工作負載、IO 密集型工作負載、以及高競爭("hot spot"熱點競爭問題)工作負載。
- NoSQL:MySQL從5.7版本開始提供 NoSQL 儲存功能,目前在8.0版本中這部分功能也得到了更大的改進。該項功能消除了對獨立的 NoSQL 文件資料庫的需求,而 MySQL 文件儲存也為 schema-less 模式的 JSON 文件提供了多文件事務支援和完整的ACID合規性。
- 視窗函式(Window Functions):從 MySQL 8.0 開始,新增了一個叫視窗函式的概念,它可以用來實現若干新的查詢方式。視窗函式與 SUM()、COUNT() 這種集合函式類似,但它不會將多行查詢結果合併為一行,而是將結果放回多行當中。即視窗函式不需要 GROUP BY。
- 視窗函式
- MySQL 8.0提供了SQL視窗功能。與分組集合函式類似,視窗函式對一組行進行一些計算,例如COUNT或SUM。但是,如果分組聚合將這組行集合到一行中,則視窗函式將為結果集中的每一行執行聚合。
- 視窗化的聚合函式:COUNT,SUM,AVG,MIN,MAX,BIT_OR,BIT_AND,BIT_XOR,STDDEV_POP(及其同義詞STD,STDDEV),STDDEV_SAMP,VAR_POP(及其同義詞VARIANCE)和VAR_SAMP。
- 專門的視窗函式是:RANK,DENSE_RANK,PERCENT_RANK,CUME_DIST,NTILE,ROW_NUMBER,FIRST_VALUE,LAST_VALUE,NTH_VALUE,LEAD和LAG
- 視窗函式
對視窗函式(又名分析函式)的支援是一種頻繁的使用者請求
-
隱藏索引:在 MySQL 8.0 中,索引可以被“隱藏”和“顯示”。當對索引進行隱藏時,它不會被查詢優化器所使用。我們可以使用這個特性用於效能除錯,例如我們先隱藏一個索引,然後觀察其對資料庫的影響。如果資料庫效能有所下降,說明這個索引是有用的,然後將其“恢復顯示”即可;如果資料庫效能看不出變化,說明這個索引是多餘的,可以考慮刪掉。
-
降序索引:MySQL 8.0 為索引提供按降序方式進行排序的支援,在這種索引中的值也會按降序的方式進行排序。
-
公用表表達式(Common Table Expressions CTE):在複雜的查詢中使用嵌入式表時,使用 CTE 使得查詢語句更清晰。
- MySQL 8.0提供[遞迴]公用表表達式(CTE)。非遞迴CTE可以解釋為“改進的派生表”,因為它允許派生表被多次引用。遞迴CTE是一組迭代構建的行:從最初的一組行開始,一個程序派生新的行,然後將這些新的行重新輸入到程序中,產生更多的行,等等,直到該過程不再生成行。
-
UTF-8 編碼:從 MySQL 8 開始,使用 utf8mb4 作為 MySQL 的預設字符集。
-
JSON:MySQL 8 大幅改進了對 JSON 的支援,添加了基於路徑查詢引數從 JSON 欄位中抽取資料的 JSON_EXTRACT() 函式,以及用於將資料分別組合到 JSON 陣列和物件中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函式。
-
可靠性:InnoDB 現在支援表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以實現事務完整性,要麼失敗回滾,要麼成功提交,不至於出現 DDL 時部分成功的問題,此外還支援 crash-safe 特性,元資料儲存在單個事務資料字典中。
-
高可用性(High Availability):InnoDB 叢集為您的資料庫提供整合的原生 HA 解決方案。
-
安全性:對 OpenSSL 的改進、新的預設身份驗證、SQL 角色、密碼強度、授權。
MySQL8的安裝介紹
-
進入官網後,點選"Dowload",然後頁面往下拉
-
接下來看到的頁面是這樣的,紅色框框的連結就是mysql社群版,是免費的mysql版本,然後我們點選這個框框的連結:
-
接下來跳轉到這個頁面,在這裡,我們只要下載社群版的Server就可以了:
-
下載免安裝版(windows以外的其他系統除外)
- 至此,安裝包就下載好了!
注意,安裝的目錄應當放在指定位置,其次,絕對路徑中避免出現中文,推薦首選英文為命名條件!
MySQL解壓和配置環境變數
-
找一個資料夾放入解壓後的mysql,不建議放c盤,200M左右的sql解壓後大約接近1G
-
把MySQL解壓後的bin檔案地址加入環境變數的path,方便終端尋找MySQL命令列。
MySQL 建立配置
下載完後,建議解壓到一個沒有中文的路徑,在解壓目錄建立my.ini配置檔案(如果沒有就自己手動建立一個即可)
新增相關基本配置
````
這些是基本配置資訊
[client]
設定mysql客戶端預設字符集
default-character-set=utf8mb4 [mysqld]
設定3336埠
port = 3336
設定mysql的安裝目錄
basedir=D:\developer\installed\mysql8\mysql-8.0.12-winx64
設定 mysql資料庫的資料的存放目錄
datadir=D:\developer\installed\mysql8\mysql-8.0.12-winx64\data
允許最大連線數
max_connections=20
建立新表時將使用的預設儲存引擎
default-storage-engine=INNODB
允許連線失敗的次數。
max_connect_errors=10
服務端使用的字符集預設為utf8mb4
character-set-server=utf8mb4
建立新表時將使用的預設儲存引擎
使用“mysql_native_password”外掛認證
mysql_native_password
default_authentication_plugin=mysql_native_password
設定時區為東八區,此項設定後,在連線MySQL的時候可以不用每次都手動設定時區
default-time-zone = '+8:00' ````
- mysql給出的初始密碼太複雜了,一般我們需要改為一個簡單的密碼方便之後登陸,在MySQL8.0.4以前,執行:SET PASSWORD=PASSWORD(’[修改的密碼]’),即可更改密碼,但MySQL8.0.4開始,這樣預設是不行的。因為之前,MySQL的密碼認證外掛是“mysql_native_password”,而現在使用的是“caching_sha2_password”。
- 因為當前有很多資料庫工具和連結包都不支援“caching_sha2_password”,為了方便,暫時需要改回“mysql_native_password”認證外掛。
初始化MySQL服務
採用cmd進入解壓後的bin目錄,輸入mysqld --initialize --console
- mysql會在和bin同級目錄下產生data檔案,即root的資料庫,併產生如下紅框中的隨機密碼(如果沒有密碼,可以使用mysql -uroot -p直接登陸),對應賬號為root。在沒有更改密碼前,需要記住這個密碼,後續登入需要用到。
安裝MySQL服務
- 還在bin 目錄下執行命令
mysqld --install [服務名]
後面的服務名可以不寫,預設的名字為 mysql。當然,如果電腦上需要安裝多個MySQL服務,就可以用不同的名字區分了,比如 liboMySQL
-
在mysql的bin目錄下面執行: mysqld --install
-
報錯資訊如下:Install/Remove of the Service Denied
-
解決辦法:開啟cmd.exe程式的時候選擇“用管理員身份開啟”。
-
出現上述資訊則標識成功安裝
啟動MySQL服務
輸入:net start [服務名]
登入MySQL服務
- 登入指定埠3336
命令如下,這時候會提示輸入密碼,使用上面安裝時給的隨機密碼,填入即可登入成功,進入MySQL命令模式。
mysql -u root -p 3336
修改密碼
剛才生成的是臨時密碼,得改。
java
輸入ALTER USER "root"@"localhost" IDENTIFIED BY "新密碼";
解除安裝MySQL服務
停止服務
net stop libomysql(服務名)
解除安裝服務
mysqld --remove libomysql(服務名)
參考資料
- http://www.cnblogs.com/2020javamianshibaodian/p/12933674.html
- http://www.jianshu.com/p/647a596cb251
- http://www.jb51.net/article/218165.htm
- http://blog.csdn.net/qq_32448349/article/details/81701355
- 完整秒殺架構的設計到技術關鍵點的“情報資訊”
- 獨一無二的「MySQL調優金字塔」相信也許你擁有了它,你就很可能擁有了全世界。
- 【MySQL技術之旅】(5)該換換你的資料庫版本了,讓我們一同迎接8.0的到來哦!(初探篇)
- ☕【Java技術指南】「Java8程式設計專題」讓你真正會用對Java新版日期時間API程式設計指南
- 【Fegin技術專題】「原生態」開啟Fegin之RPC技術的開端,你會使用原生態的Fegin嗎?(高階用法)
- 【優化技術專題】「執行緒間的高效能訊息框架」終極關注Disruptor的核心原始碼和Java8的@Contended偽共享指南
- 【優化技術專題】「執行緒間的高效能訊息框架」再次細節領略Disruptor的底層原理和優勢分析
- 【Zookeeper核心原理】Paxos協議的原理和實際執行中的應用流程分析
- ☕【Java技術指南】「JPA程式設計專題」讓你不再對JPA技術中的“持久化型註解”感到陌生了!
- Java技術開發專題系列之【Guava RateLimiter】針對於限流器的入門到精通(含原始碼分析介紹)
- ☕【Java技術指南】「JPA程式設計專題」讓你不再對JPA技術中的“持久化型註解”感到陌生了!
- 【Eureka技術指南】「SpringCloud」從原始碼層面讓你認識Eureka工作流程和運作機制(下)
- MySQL技術專題(6)這也許是你的知識盲區-MySQL主從架構以及[半同步機制]
- 優化技術專題-執行緒間的高效能訊息框架-深入淺出Disruptor的使用和原理
- ☕【Java技術指南】「併發程式設計專題」Fork/Join框架基本使用和原理探究(原理篇)
- ☕【Java技術指南】「併發程式設計專題」Guava RateLimiter針對於限流器的入門到精通(含原始碼分析介紹)
- 【優化技術專題】「溫故而知新」基於Quartz系列的任務排程框架的動態化任務實現分析
- ☕【Java技術指南】「併發程式設計專題」Guava RateLimiter針對於限流器的入門到精通(含實戰和原理分析)
- 【MySQL技術之旅】(4)這也許是你的知識盲區-[MySQL主從架構]之半同步機制
- ☕【Java技術指南】「併發程式設計專題」CompletionService框架基本使用和原理探究(基礎篇)