成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL 8.0備受矚目的新特性大放送!

數據庫 MySQL
MySQL于2016-09-12正式發布8.0 DM 版本到現在的 8.0.3 RC版本,進度還是蠻快的。本文從字符集、數據庫管理、性能優化、安全等方面為大家匯總介紹 8.0 版本的比較吸引人的新特性,詳細的新的功能 特性還需要去官方文檔查看。

MySQL 8.0備受矚目的新特性大放送!

MySQL于 2016-09-12正式發布8.0 DM 版本到現在的 8.0.3 RC版本,進度還是蠻快的。對Oracle比較了解的朋友看到最近的MySQL 8.0的功能,會有一致的想法:在Oracle的帶領下MySQL越來越像Oracle,包括安裝包也越來越大。

本文從字符集、數據庫管理、性能優化、安全等方面為大家匯總介紹 8.0 版本的比較吸引人的新特性,詳細的新的功能 特性還需要去官方文檔查看。

新的系統字典表

由于MySQL采用Server層和插件式存儲引擎層的架構模式,在Server層MySQL為每個表創建frm文件來保存表定義相關的元數據信息。

然而部分存儲引擎(比如InnoDB)本身也會存儲元數據,這樣不僅產生了元數據冗余,而且由于Server層和引擎層各自管理表的元數據,在執行DDL類似的操作時,遇到異常情況,系統很難做到crash-safe,DDL操作也做不到原子性。

從MySQL 8.0 開始采用新的Data Dictionary 系統,所有的元數據都用InnoDB引擎進行存儲,使用新的系統帶來如下好處:

  1. 解決DDL的原子性問題。
  2. 支持事務型的字典存儲系統和crash safe 。
  3. 去掉基于文件的元數據存儲,比如表定義文件frm文件及其他server層的元數據文件(frm, par, trn, trg,isl, db.opt)
  4. 支持使用統一集中的緩存系統來緩存數據字典信息。

新的Information Schema定義

MySQL 8.0版本使用視圖重構I_S 庫中的表,隱藏了系統表,通過查詢物理表的方式避免了為I_S查詢創建臨時表(臨時表的操作包含了server層創建frm, 引擎層獲取數據or需要鎖保護的全局數據),查詢性能大幅度提升。

有興趣的朋友可以閱讀官方團隊的文章新的IS系統帶來的性能提升。

  • http://mysqlserverteam.com/mysql-8-0-scaling-and-performance-of-information_schema/?spm=5176.100239.blogcont61286.10.f8hlVB
  • http://mysqlserverteam.com/mysql-8-0-improvements-to-information_schema/?spm=5176.100239.blogcont61286.9.f8hlVB

角色管理

增加角色role,看到這里Oracle DBA朋友是不是覺得似曾相識。角色是一些列權限的集合,可以給某個用戶授予和回收角色,使用角色可以更方便進行權限管理。參考一個簡單的例子:

創建role

  1. CREATE ROLE 'app_read''app_write'

給role賦權

  1. GRANT SELECT ON app_db.* TO 'app_read'
  2.  
  3. GRANT INSERTUPDATEDELETE ON app_db.* TO 'app_write' 

創建用戶

  1. CREATE USER 'ro_user'@'localhost' IDENTIFIED BY 'read_user1pass'
  2.  
  3. CREATE USER 'rw_user'@'localhost' IDENTIFIED BY 'rw_user1pass' 

給用戶賦予角色

  1. GRANT 'app_read' TO 'ro_user'@'localhost'
  2.  
  3. GRANT 'app_read','app_write' TO 'rw_user'@'localhost'; ##將兩種角色的權限賦予賬號  

說點自己的關于role的想法,對于精細化管理的MySQL運維系統會基于業務來區分權限,role的用處可能用處不大。但是對于很多庫混合在一起的實例場景,又有不同的開發同學需要申請個人賬戶訪問db,可以通過role類維護權限分配。

配置文件

MySQL 8.0版本支持在線修改全局參數持久化,通過加上PERSIST關鍵字,可以將調整持久化到新的配置文件中,再次重啟db還可以應用到***的參數。對于加上 PERSIST 關鍵字修改參數命令,MySQL系統會生成一個包含json格式數據的 mysqld-auto.cnf 文件,比如執行:

  1. set globa sync_binlog=1; 

系統會生成一個包含如下內容的 mysqld-auto.cnf 的文件:

  1. "mysql_server": {"sync_binlog""1" } } 

當 my.cnf 和 mysqld-auto.cnf 同時存在時,后者具有高優先級。

自增列優化

其實這個不算是新特性,而是解決了之前一個歷史悠久的bug(bugid為199).MySQL 8.0 版本之前InnoDB初始化AUTO_INCREMENT的方式:在DB重啟時,MySQL會將表上***的自增值作為***值,下次分配是分配max(id)+1,如果是歸檔表或者其它模式刪除數據之后,DB系統重啟,自增值可能被重用。

8.0 版本不再重置auto_increment 的值,直接復用重啟之前的***值,具體解決方法請移步WL#7816

http://dev.mysql.com/worklog/task/?spm=5176.100239.blogcont60885.10.7NgPbk&id=7816

InnoDB 優化

1、直方圖

MySQL 8.0 版本開始支持期待已久直方圖。優化器會利用存儲在I_S的column_statistics的數據,判斷字段的值的分布,得到更準確的執行計劃。我們可以使用

  1. ANALYZE TABLE table_name [UPDATE HISTOGRAM|DROP HISTOGRAM] 

來收集或者刪除直方圖信息。

2、不可見索引

開始支持invisible index,(是不是感覺又和Oracle一樣了),在優化SQL的過程中可以設置索引為不可見,優化器變不會利用不可見索引。另外如果對于具有歷史原因的表,不清楚到底用不用索引,可以設置索引為不可見,觀察一段時間再將索引下線。使用該功能的時候記得檢查optimizer_switch中use_invisible_indexes參數是否為off。如果是on 優化器在優化的時候會依然使用不可見索引。

3、支持會話級別SET_VAR 動態調整部分參數,有利于提升語句性能。

  1. select /*+ SET_VAR(sort_buffer_size = 16M) */ name from people order y name
  2.  
  3. insert /*+ SET_VAR(foreign_key_checks=OFF) */ into t2 values(2);  

拆或者刪除mutex鎖

對MySQL 技術發展比較了解的朋友肯定知道解決高并發的問題常用的手段就是“拆鎖和移除鎖”。 MySQL 8.0版本使用多個更細粒度的mutex代替buffer pool mutex這把大鎖。

具體的替換方式如下:

- LRU_list_mutex for the LRU_list;

- zip_free mutex for the zip_free arrays;

- zip_hash mutex for the zip_hash hash and in_zip_hash flag;

- free_list_mutex for the free_list and withdraw list.

通過對鎖的拆分,降低了全局鎖的競爭,提升了申請buffer pool的并發處理能力。

行緩存

MySQL 8.0 版本的優化器可以估算將要讀取的行數,因此可以提供給存儲引擎一個合適大小的row buffer來存儲需要的數據。大批量的連續數據掃描的性能將受益于更大的record buffer。

臨時表

取消對壓縮臨時表的支持,并存儲臨時表的元數據到內存中,提高性能 。

字符集

默認字符集由 latin1 修改為 utf8mb4,并增加支持 Unicode 9 ,字符集校驗相應的修改為utf8mb4_800_ci_ai (大小寫不敏感)。

另外一個大小寫敏感的校驗字符集是utf8mb4_ru_0900_as_cs。

默認參數

  1. 修改back_log的默認值,保持和 max_connections一致,增強突發流量帶來的連接處理容量。
  2. 修改 event_scheduler 默認為ON,之前默認是關閉的。看來MySQL以后推薦大家使用任務job 這個功能了,對于規模化運維需要有一套平臺工具為做管理,否則人員的流動會帶來 穩定性上面的風險。
  3. 調整max_allowed_packet 的默認值,從4M增加到64M,其實推薦512M 并且朱備庫一定要保持一致,否則異常斷電的情況下會報1236錯誤。
  4. 調整bin_log,log_slaves_update默認值為on。
  5. 增加binlog的過期時間為30天,老版本是7天,以后上生產環境時,請務必檢查該參數,防止binlog過多造成空間緊張。

支持DDL 原子操作

InnoDB表的DDL支持事務完整性,要么成功要么回滾,將DDL操作回滾日志寫入到data dictionary 數據字典表 mysql.innodb_ddl_log 中用于回滾操作。

總結

本文例舉了MySQL 8.0 部分新特性或者功能,更加細節的知識歡迎閱讀官方手冊 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/preface.html。

從上面的功能特性來看MySQL不斷向前發展,解決了很多DBA的日常問題,希望能夠盡快GA。 

責任編輯:龐桂玉 來源: DBAplus社群
相關推薦

2010-03-30 17:08:30

Nginx服務器

2010-03-04 11:11:05

互聯網

2010-11-02 15:36:30

jQuery

2016-03-07 13:08:13

下一代防火墻NSS Labs山石網科

2010-07-22 10:28:59

Web開發IDE

2014-08-25 14:40:22

百加域名

2014-01-10 14:08:57

WLAN速度優化

2020-12-28 15:08:27

開發C 語言編程

2012-05-10 10:55:03

CSS

2018-10-25 12:01:37

機房搬遷要點

2020-10-29 10:43:24

網絡安全支付寶電子錢包

2009-02-02 14:25:45

軟件 芮祥麟 SAP

2021-05-11 10:30:34

數字化

2016-11-11 19:51:35

2011-11-24 09:13:16

CSS

2012-01-09 16:43:13

點心通訊錄

2009-03-25 16:54:10

Linux軟件免費
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线观看www | 亚洲欧美网 | 国产资源在线视频 | 亚洲精品乱码8久久久久久日本 | 国产精品区一区二区三区 | 日本成人免费网站 | 国产一区二区三区视频 | 日韩av啪啪网站大全免费观看 | 黄网站色大毛片 | 精品99在线| 欧美a级成人淫片免费看 | 亚洲精品成人 | 亚洲一区二区三区免费视频 | 成人午夜激情 | 日韩美女在线看免费观看 | 欧美日韩高清在线一区 | 九九热免费视频在线观看 | 久草视频2 | 手机看片在线播放 | 久久99精品久久久久久国产越南 | 午夜精品在线观看 | 97超碰人人| 国产精品69毛片高清亚洲 | 国产综合在线视频 | 久久久久国产 | 久久一区二区三区电影 | 亚洲 精品 综合 精品 自拍 | 一区二区三区视频在线观看 | 我想看一级黄色毛片 | 成人免费观看男女羞羞视频 | 欧美色综合一区二区三区 | 成人精品一区 | 波多野结衣中文字幕一区二区三区 | 97精品超碰一区二区三区 | av永久 | www.日日操| 亚洲协和影视 | 九九导航 | 日韩欧美在线一区 | 中文字幕成人 | 亚洲乱码国产乱码精品精的特点 |