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

MySQL 5.7版本新特性連載(四)

數(shù)據(jù)庫 MySQL
本文將和大家一起分享下5.7的新特性,不過我們要先從即將被刪除的特性以及建議不再使用的特性說起。根據(jù)這些情況,我們?cè)谛掳姹炯耙院蟮陌姹局校瑧?yīng)該不再使用,避免未來產(chǎn)生兼容性問題。

   本文將和大家一起分享下5.7的新特性,不過我們要先從即將被刪除的特性以及建議不再使用的特性說起。根據(jù)這些情況,我們?cè)谛掳姹炯耙院蟮陌姹局校瑧?yīng)該不再使用,避免未來產(chǎn)生兼容性問題。

  本文是基于MySQL-5.7.7-rc版本,未來可能 還會(huì)發(fā)生更多變化。

  1、SQL MODE變化

  a. 默認(rèn)啟用 STRICT_TRANS_TABLES 模式;

  b. 對(duì) ONLY_FULL_GROUP_BY 模式實(shí)現(xiàn)了更復(fù)雜的特性支持,并且也被默認(rèn)啟用;

  c. 其他被默認(rèn)啟用的sql mode還有 NO_ENGINE_SUBSTITUTION;

  【iMySQL建議】

  對(duì)廣大MySQL使用者而言,以往不是那么嚴(yán)格的模式還是很方便的,在5.7版本下可能會(huì)覺得略為不適,慢慢習(xí)慣吧。比如向一個(gè)20字符長度的VARCHAR列寫入30個(gè)字符,在以前會(huì)自動(dòng)階段并給個(gè)提示告警,而在5.7版本下,則直接拋出錯(cuò)誤了。個(gè)人認(rèn)為這倒是一個(gè)好的做法,避免各種奇葩的寫法。

  【新特性實(shí)踐】

  1. -- 查看默認(rèn)的 sql_mode 
  2. [yejr@imysql.com]> select @@sql_mode; 
  3. +-----------------------------------------------------------------------------------+ 
  4. | @@sql_mode | 
  5. +-----------------------------------------------------------------------------------+ 
  6. | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | 
  7. +-----------------------------------------------------------------------------------+ 
  8.  
  9. -- 插入50個(gè)字符 
  10. [yejr@imysql.com]> insert into t_char select 0, repeat('x',50); 
  11. ERROR 1406 (22001): Data too long for column 'uname' at row 1 
  12.  
  13. -- 修改本 session 的 sql_mode 
  14. [yejr@imysql.com]> set sql_mode = 'ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
  15. Query OK, 0 rows affected (0.00 sec) 
  16.  
  17. -- 去掉 STRICT_TRANS_TABLES 模式后 
  18. [yejr@imysql.com]> select @@sql_mode; 
  19. +---------------------------------------------------------------+ 
  20. | @@sql_mode | 
  21. +---------------------------------------------------------------+ 
  22. | ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | 
  23. +---------------------------------------------------------------+ 
  24.  
  25. [yejr@imysql.com]> insert into t_char select 0, repeat('x',50); 
  26. Query OK, 1 row affected, 1 warning (0.00 sec)  -- 提示有告警信息 
  27. Records: 1 Duplicates: 0 Warnings: 1 
  28.  
  29. [yejr@imysql.com]> show warnings; 
  30. +---------+------+--------------------------------------------+ 
  31. Level | Code | Message | 
  32. +---------+------+--------------------------------------------+ 
  33. | Warning | 1265 | Data truncated for column 'uname' at row 1 | 
  34. +---------+------+--------------------------------------------+ 

因?yàn)?uname 字段的長度為 40 個(gè)字符。

  2、優(yōu)化online操作,例如修改buffer pool、修改索引名(非主鍵)、修改REPLICATION FILTER、修改MATER而無需關(guān)閉SLAVE線程 等眾多特性。

  可以在線修改buffer pool對(duì)DBA來說實(shí)在太方便了,實(shí)例運(yùn)行過程中可以動(dòng)態(tài)調(diào)整,避免事先分配不合理的情況,不過 innodb_buffer_pool_instances 不能修改,而且在 innodb_buffer_pool_instances 大于 1 時(shí),也不能將 buffer pool 調(diào)整到 1GB 以內(nèi),需要稍加注意。

 

  如果是加大buffer pool,其過程大致是:

  1. 1、以innodb_buffer_pool_chunk_size為單位,分配新的內(nèi)存pages; 
  2. 2、擴(kuò)展buffer pool的AHI(adaptive hash index)鏈表,將新分配的pages包含進(jìn)來; 
  3. 3、將新分配的pages添加到free list中; 

如果是縮減buffer pool,其過程則大致是:

  1. 1、重整buffer pool,準(zhǔn)備回收pages; 
  2. 2、以innodb_buffer_pool_chunk_size為單位,釋放刪除這些pages(這個(gè)過程會(huì)有一點(diǎn)點(diǎn)耗時(shí)); 
  3. 3、調(diào)整AHI鏈表,使用新的內(nèi)存地址。 

實(shí)際測(cè)試時(shí),發(fā)現(xiàn)在線修改 buffer poo 的代價(jià)并不大,SQL命令提交完畢后都是瞬間完成,而后臺(tái)進(jìn)程的耗時(shí)也并不太久。在一個(gè)并發(fā)128線程跑tpcc壓測(cè)的環(huán)境中,將 buffer pool 從32G擴(kuò)展到48G,后臺(tái)線程耗時(shí) 3秒,而從 48G 縮減回 32G 則耗時(shí) 18秒,期間壓測(cè)的事務(wù)未發(fā)生任何鎖等待。

  1. -- 演示1:從 1G 擴(kuò)大到 16G 
  2. [yejr@imysql.com]> SET GLOBAL innodb_buffer_pool_size = 51539607552; 
  3. Query OK, 0 rows affected (0.00 sec) 
  4.  
  5. -- 看看日志記錄 
  6. 09:21:19.460543Z 0 [Note] InnoDB: Resizing buffer pool from 1073741824 to 17179869184. (unit=134217728) 
  7. 09:21:19.468069Z 0 [Note] InnoDB: disabled adaptive hash index
  8. 09:21:20.760724Z 0 [Note] InnoDB: buffer pool 0 : 60 chunks (491511 blocks) were added. 
  9. 09:21:21.922869Z 0 [Note] InnoDB: buffer pool 1 : 60 chunks (491520 blocks) were added. 
  10. 09:21:21.935114Z 0 [Note] InnoDB: buffer pool 0 : hash tables were resized. 
  11. 09:21:21.947264Z 0 [Note] InnoDB: buffer pool 1 : hash tables were resized. 
  12. 09:21:22.203031Z 0 [Note] InnoDB: Resized hash tables at lock_sys, adaptive hash index, dictionary. 
  13. 09:21:22.203062Z 0 [Note] InnoDB: Completed to resize buffer pool from 1073741824 to 17179869184. 
  14. 09:21:22.203075Z 0 [Note] InnoDB: Re-enabled adaptive hash index
  15.  
  16. -- 演示2:從 16G 縮減到 1G 
  17. [yejr@imysql.com]> SET GLOBAL innodb_buffer_pool_size = 1073741824; 
  18. Query OK, 0 rows affected (0.00 sec) 
  19.  
  20. -- 看看日志記錄 
  21. 09:22:55.591669Z 0 [Note] InnoDB: Resizing buffer pool from 17179869184 to 1073741824. (unit=134217728) 
  22. 09:22:55.680836Z 0 [Note] InnoDB: disabled adaptive hash index
  23. 09:22:55.680864Z 0 [Note] InnoDB: buffer pool 0 : start to withdraw the last 491511 blocks. 
  24. 09:22:55.765778Z 0 [Note] InnoDB: buffer pool 0 : withdrew 489812 blocks from free list. Tried to relocate 1698 pages (491510/491511). 
  25. 09:22:55.774492Z 0 [Note] InnoDB: buffer pool 0 : withdrew 0 blocks from free list. Tried to relocate 1 pages (491511/491511). 
  26. 09:22:55.782745Z 0 [Note] InnoDB: buffer pool 0 : withdrawn target 491511 blocks. 
  27. 09:22:55.782786Z 0 [Note] InnoDB: buffer pool 1 : start to withdraw the last 491520 blocks. 
  28. 09:22:55.892068Z 0 [Note] InnoDB: buffer pool 1 : withdrew 489350 blocks from free list. Tried to relocate 2166 pages (491517/491520). 
  29. 09:22:55.900743Z 0 [Note] InnoDB: buffer pool 1 : withdrew 0 blocks from free list. Tried to relocate 2 pages (491519/491520). 
  30. 09:22:55.908257Z 0 [Note] InnoDB: buffer pool 1 : withdrew 0 blocks from free list. Tried to relocate 0 pages (491519/491520). 
  31. 09:22:55.915778Z 0 [Note] InnoDB: buffer pool 1 : withdrew 0 blocks from free list. Tried to relocate 1 pages (491520/491520). 
  32. 09:22:55.923836Z 0 [Note] InnoDB: buffer pool 1 : withdrawn target 491520 blocks. 
  33. 09:22:56.149172Z 0 [Note] InnoDB: buffer pool 0 : 60 chunks (491511 blocks) were freed. 
  34. 09:22:56.308997Z 0 [Note] InnoDB: buffer pool 1 : 60 chunks (491520 blocks) were freed. 
  35. 09:22:56.316258Z 0 [Note] InnoDB: buffer pool 0 : hash tables were resized. 
  36. 09:22:56.324027Z 0 [Note] InnoDB: buffer pool 1 : hash tables were resized. 
  37. 09:22:56.393589Z 0 [Note] InnoDB: Resized hash tables at lock_sys, adaptive hash index, dictionary. 
  38. 09:22:56.393616Z 0 [Note] InnoDB: Completed to resize buffer pool from 17179869184 to 1073741824. 
  39. 09:22:56.393628Z 0 [Note] InnoDB: Re-enabled adaptive hash index

  再來看下在線修改非主鍵索引名,直接用 ALTER TABLE RENAME INDEX 語法即可。

  【新特性實(shí)踐】

 

  例如下面的SQL語法:

  1. [yejr@imysql.com]> ALTER TABLE orders RENAME INDEX idx1 TO idxxx1; 
  2. Query OK, 0 rows affected (0.11 sec) 
  3. Records: 0 Duplicates: 0 Warnings: 0 

可以看到,幾乎瞬間完成,盡管我在執(zhí)行這個(gè)SQL時(shí)正跑著64個(gè)并發(fā)tpcc壓測(cè)。

責(zé)任編輯:honglu 來源: MySQL中文網(wǎng)
相關(guān)推薦

2015-07-17 13:43:09

MySQL 5.7

2015-07-17 13:45:12

MySQL 5.7

2015-07-17 13:27:16

MySQL 5.7

2009-12-18 13:43:07

Ruby 1.9版本

2022-06-27 06:02:27

geopandas開發(fā)Python

2010-03-16 14:05:57

Eclipse 3.6

2025-02-20 09:52:45

C# 6開發(fā)代碼

2016-01-21 11:05:52

ES6JavaScript新特性

2012-09-28 09:58:35

Outlook 201Office 2013

2015-07-20 16:48:53

MongoDB 2.5查詢引擎

2012-11-16 09:50:32

Windbg

2012-03-06 13:45:43

JavaJActor

2019-07-19 15:53:45

MySQL 5.7MySQL 8.0MySQL

2010-06-08 09:45:27

openSUSE 11

2012-05-07 23:45:54

FantomJavaJVM

2023-10-13 07:23:06

2018-08-31 15:06:45

數(shù)據(jù)庫MySQLMySQL 8.0.1

2009-01-16 10:01:57

MySQL復(fù)制特性測(cè)試

2010-08-26 17:08:20

vsftpd faq

2009-07-16 16:53:29

Jython 2.5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久精品国产一区 | 亚洲欧美中文日韩在线v日本 | 欧美成人一区二区 | 久久不卡 | 亚洲精品久久久久国产 | 久久久久综合 | 亚洲成人999 | 国产在线视频一区二区 | 欧美久久电影 | 国产成人福利在线观看 | 国产日韩一区二区三免费高清 | 欧美成人a | 久久精品欧美视频 | 成人国产一区二区三区精品麻豆 | 美女天天操| 不卡一二区 | 欧美videosex性极品hd | 特级特黄特色的免费大片 | 成人在线国产 | 黄视频网站免费观看 | 免费同性女女aaa免费网站 | 青青草视频免费观看 | 人人干人人看 | 亚洲资源站| 国产精品视频入口 | 日韩久久久久久久久久久 | 亚洲一区二区三区四区五区午夜 | 黄色在线免费播放 | 国外成人在线视频 | 日本a视频 | 综合二区 | 日韩免费三级 | 国产在线视频在线观看 | 国产在线一区二区三区 | av午夜激情 | 日韩精品免费一区 | 日韩精品视频在线观看一区二区三区 | 日韩伦理一区二区三区 | 亚洲一区二区久久 | 亚洲国产精品一区 | 天天干天天爽 |