中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

發布時間:2023-02-27 13:34:32 來源:億速云 閱讀:275 作者:iii 欄目:MySQL數據庫

這篇文章主要講解了“MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“MySQL驅動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 文檔數據庫的需求,而 MySQL 文檔存儲也為 schema-less 模式的 JSON 文檔提供了多文檔事務支持和完整的 ACID 合規性。

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

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

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

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

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

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

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

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

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

    2、下載MySQL

    到官網,下載MySQL Community Server,這個是日常使用版本,選擇要安裝的操作系統,下載對應的安裝包,下載最新的穩定版本即可。

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    3、備份數據

    保留數據SQL腳本,沒有的話導出,可以使用Navicat等工具進行備份。

    4、卸載原版本MySQL

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

    5、安裝下載的新版本

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

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

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

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

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

    1、為什么要升級驅動版本

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

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

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

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    2、升級版本

    直接下載最新版本jar包或,修改引用的版本號。可以到maven的一些搜索網站(如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、驅動類變了,原來是由原來的com.mysql.jdbc.Driver改為com.mysql.cj.jdbc.Driver

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

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

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

    2、jdbc_url上的時區變為必須配置,否則會啟動報錯

    Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value &lsquo;?й???&rsquo; 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之后的一些兼容問題

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

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

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

    三、MySQL8.0和5.7性能對比

    1、InnoDB Row Operations

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    2、Transactions Processed

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    3、CPU Resources

    MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決

    感謝各位的閱讀,以上就是“MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決”的內容了,經過本文的學習后,相信大家對MySQL驅動mysql-connector-java升級到8.0.X版本問題怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    曲阜市| 襄城县| 丰镇市| 平遥县| 乐平市| 嘉鱼县| 禄劝| 上犹县| 沐川县| 张家界市| 洛川县| 常德市| 玉环县| 社旗县| 贵南县| 莱芜市| 苗栗县| 老河口市| 樟树市| 社会| 兰西县| 镇安县| 新昌县| 冕宁县| 东乌珠穆沁旗| 淳安县| 咸阳市| 敦化市| 桂林市| 德格县| 巴青县| 白朗县| 达孜县| 屯门区| 宜兰县| 衡水市| 彭州市| 府谷县| 长治市| 通河县| 辽宁省|