欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL和MySQL驅(qū)動mysql-connector-java升級到8.0.X版本問題

 更新時間:2023年02月27日 10:38:07   作者:心動的偏執(zhí)  
這篇文章主要介紹了MySQL和MySQL驅(qū)動mysql-connector-java升級到8.0.X版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一、MySQL升級到8.0.X版本

1、升級的原因及MySQL8.0版本新特性

比MySQL 5.7快2倍,僅這一個理由就夠了,而且還有其他許多很好的新特性:

1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍。MySQL 8.0 在以下方面帶來了更好的性能:讀/寫工作負載、IO 密集型工作負載、以及高競爭("hot spot"熱點競爭問題)工作負載。

2. NoSQL:MySQL 從 5.7 版本開始提供 NoSQL 存儲功能,目前在 8.0 版本中這部分功能也得到了更大的改進。該項功能消除了對獨立的 NoSQL 文檔數(shù)據(jù)庫的需求,而 MySQL 文檔存儲也為 schema-less 模式的 JSON 文檔提供了多文檔事務(wù)支持和完整的 ACID 合規(guī)性。

3. 窗口函數(shù)(Window Functions):從 MySQL 8.0 開始,新增了一個叫窗口函數(shù)的概念,它可以用來實現(xiàn)若干新的查詢方式。窗口函數(shù)與 SUM()、COUNT() 這種集合函數(shù)類似,但它不會將多行查詢結(jié)果合并為一行,而是將結(jié)果放回多行當(dāng)中。即窗口函數(shù)不需要 GROUP BY。

4. 隱藏索引:在 MySQL 8.0 中,索引可以被“隱藏”和“顯示”。當(dāng)對索引進行隱藏時,它不會被查詢優(yōu)化器所使用。我們可以使用這個特性用于性能調(diào)試,例如我們先隱藏一個索引,然后觀察其對數(shù)據(jù)庫的影響。如果數(shù)據(jù)庫性能有所下降,說明這個索引是有用的,然后將其“恢復(fù)顯示”即可;如果數(shù)據(jù)庫性能看不出變化,說明這個索引是多余的,可以考慮刪掉。

5. 降序索引:MySQL 8.0 為索引提供按降序方式進行排序的支持,在這種索引中的值也會按降序的方式進行排序。

6. 通用表表達式(Common Table Expressions CTE):在復(fù)雜的查詢中使用嵌入式表時,使用 CTE 使得查詢語句更清晰。

7. UTF-8 編碼:從 MySQL 8 開始,使用 utf8mb4 作為 MySQL 的默認字符集。

8. JSON:MySQL 8 大幅改進了對 JSON 的支持,添加了基于路徑查詢參數(shù)從 JSON 字段中抽取數(shù)據(jù)的 JSON_EXTRACT() 函數(shù),以及用于將數(shù)據(jù)分別組合到 JSON 數(shù)組和對象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函數(shù)。

9. 可靠性:InnoDB 現(xiàn)在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以實現(xiàn)事務(wù)完整性了,要么失敗回滾,要么成功提交,不至于出現(xiàn) DDL 時部分成功的問題,此外還支持 crash-safe 特性,元數(shù)據(jù)存儲在單個事務(wù)數(shù)據(jù)字典中。

10. 高可用性(High Availability):InnoDB 集群為您的數(shù)據(jù)庫提供集成的原生 HA 解決方案。

11. 安全性:對 OpenSSL 的改進、新的默認身份驗證、SQL 角色、密碼強度、授權(quán)。

詳細更新說明:https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html

官方發(fā)布說明:https://blogs.oracle.com/mysql/announcing-general-availability-of-mysql-80

MySQL 8 正式版的新增功能:https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/

參考資料:https://www.cnbeta.com/articles/soft/718465.htm

2、下載MySQL

官網(wǎng):https://dev.mysql.com/downloads/mysql/

到官網(wǎng),下載MySQL Community Server,這個是日常使用版本,選擇要安裝的操作系統(tǒng),下載對應(yīng)的安裝包,下載最新的穩(wěn)定版本即可。

3、備份數(shù)據(jù)

保留數(shù)據(jù)SQL腳本,沒有的話導(dǎo)出,可以使用Navicat等工具進行備份。

4、卸載原版本MySQL

直接按照普通軟件卸載的方式卸載即可。

5、安裝下載的新版本

8.0和以前比較安裝步驟簡單了許多,一步一步安裝即可。

6、MySQL升級后的兼容性問題

兼容性還是可以的,目前為止筆者還沒遇到有兼容問題。

雖然網(wǎng)上說會有一點兼容問題,但是還是應(yīng)該升級,不能因噎廢食,利益明顯大于弊端。當(dāng)然也要考慮實際情況,最好不要在版本忙碌期間進行,可以選擇一個不是很忙的版本,最為一個事項來做升級,然后進行充分驗證和修改,保證升級后的功能正常。

二、升級MySQL驅(qū)動mysql-connector-java升級到8.0.X版本

1、為什么要升級驅(qū)動版本

筆者原來安裝MySQL后,驅(qū)動沒升級,使用的mysql-connector-java 5.1.47,驗證功能也沒問題,能夠連接數(shù)據(jù)庫。

但是一定要升級,升級后使用新的驅(qū)動類,無論是啟動加載速度還是數(shù)據(jù)庫查詢速度性能都有明顯提升。

筆者本地弄了個實例,對比了下,雖然數(shù)據(jù)量小,差距不明顯,但是還是明顯看到性能提升:

2、升級版本

直接下載最新版本jar包或,修改引用的版本號??梢缘絤aven的一些搜索網(wǎng)站(如https://mvnrepository.com/)進行搜索可用版本。

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

3、修改配置

1、驅(qū)動類變了,原來是由原來的com.mysql.jdbc.Driver改為com.mysql.cj.jdbc.Driver

不修改會影響性能,啟動過程中有告警:

Loading class `com.mysql.jdbc.Driver’. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

修改后的驅(qū)動程序通過SPI自動注冊,通常不需要手動加載驅(qū)動程序類。

2、jdbc_url上的時區(qū)變?yōu)楸仨毰渲?,否則會啟動報錯

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value ‘?й???’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.

如:

jdbc:mysql://localhost:3306/dbname?characterEncoding=utf-8&useSSL=true&serverTimezone=GMT

4、mysql-connector-java升級到8.0之后的一些兼容問題

基本還是兼容的,但是有一些不兼容的地方,目前已經(jīng)筆者知道的有2點:

1、如果數(shù)據(jù)庫表自增主鍵id是bigint類型,原來版本執(zhí)行后返回的id是Long類型,現(xiàn)在改為了BigInteger類型,如果是使用mybatis基本沒問題;如果是自定義的JDBC框架就要格外注意看處理是否有問題,類型是否存在不匹配導(dǎo)致問題。

2、日期類型的字段處理可能存在問題,如表中字段為TIMESTAMP,之前查詢返回能夠返回毫秒值,升級后不再返回。如果在查詢時有使用日期轉(zhuǎn)換函數(shù)轉(zhuǎn)換為String,并且對毫秒值進行了處理,那么升級后會報錯,需要去掉對毫秒值得處理。如果查詢返回直接映射為Date就沒問題。

三、MySQL8.0和5.7性能對比

有一份做的很好的性能對比資料,筆者這里就不做重復(fù)工作了,參考這個資料可以看出性能提升是實實在在的。

資料地址:https://severalnines.com/blog/mysql-performance-benchmarking-mysql-57-vs-mysql-80

轉(zhuǎn)載自上面資料的性能對比圖:

1、InnoDB Row Operations

2、Transactions Processed

3、CPU Resources

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

  • MYSQL?Binlog恢復(fù)誤刪數(shù)據(jù)庫詳解

    MYSQL?Binlog恢復(fù)誤刪數(shù)據(jù)庫詳解

    MySQL一旦誤刪數(shù)據(jù)庫之后恢復(fù)數(shù)據(jù)很麻煩,這里記錄一下艱辛的恢復(fù)過程,這篇文章主要給大家介紹了關(guān)于如何利用MySQL的binlog恢復(fù)誤刪數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • MYSQL中Truncate的用法詳解

    MYSQL中Truncate的用法詳解

    這篇文章主要介紹了MYSQL中Truncate的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • mysql 優(yōu)化日記

    mysql 優(yōu)化日記

    mysql 優(yōu)化日記 使用mysql的朋友可以參考下,大家知道如果mysql優(yōu)化與沒優(yōu)化性能會相差不少呢。
    2009-07-07
  • 詳解MySQL中數(shù)據(jù)類型和字段類型

    詳解MySQL中數(shù)據(jù)類型和字段類型

    這篇文章主要為大家詳細介紹了MySQL中數(shù)據(jù)類型和字段類型的使用,文中的示例代碼講解詳細,對我們學(xué)習(xí)MySQL有一定幫助,需要的可以參考一下
    2022-09-09
  • MySQL中大數(shù)據(jù)表增加字段的實現(xiàn)思路

    MySQL中大數(shù)據(jù)表增加字段的實現(xiàn)思路

    最近遇到的一個問題,需要在一張將近1000萬數(shù)據(jù)量的表中添加加一個字段,但是直接添加會導(dǎo)致mysql 奔潰,所以需要利用其他的方法進行添加,這篇文章主要給大家介紹了MySQL中大數(shù)據(jù)表增加字段的實現(xiàn)思路,需要的朋友可以參考借鑒。
    2017-01-01
  • CentOS 6.2 安裝 MySQL 5.7.28的教程(mysql 筆記)

    CentOS 6.2 安裝 MySQL 5.7.28的教程(mysql 筆記)

    本文通過圖文并茂的形式給大家介紹了CentOS 6.2 安裝 MySQL 5.7.28的教程,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2019-11-11
  • MySQL8的主要目錄結(jié)構(gòu)解讀

    MySQL8的主要目錄結(jié)構(gòu)解讀

    這篇文章主要介紹了MySQL8的主要目錄結(jié)構(gòu),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL使用命令創(chuàng)建、刪除、查詢索引的介紹

    MySQL使用命令創(chuàng)建、刪除、查詢索引的介紹

    今天小編就為大家分享一篇關(guān)于MySQL使用命令創(chuàng)建、刪除、查詢索引的介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • MySQL 大表的count()優(yōu)化實現(xiàn)

    MySQL 大表的count()優(yōu)化實現(xiàn)

    這篇文章主要介紹了MySQL 大表的count()優(yōu)化實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 最新評論