当前位置: 首页 > news >正文

mysql 8新特性

一、为什么要使用mysql 8?
1、5.7及以前的版本在2023年已经停止维护代码;
2、8  性能很好,全内存访问,200W的QPS  能跑到16万

二、有哪些新特性

1、账号安全:

  • 5.7及以前用户创建和授权可以一行sql解决,8不行,得分开执行sql语句;
  • 认证插件更行,密码的认证不一样,安全级别更高,caching_sha2_password;
  • 密码允许重复修改为一样的;

2、隐藏索引:

    查看表结构及详细信息:show  create  table  table_name\G;

  • 隐藏索引:

        (1)不会被优化器使用,不可见,
        (2)使用场景:
        a、软删除:当对索引进行创建和删除时,如果误删了再创建会影响性能,新版改为可以变成软删除,过段时间可以进行恢复

        b、灰度发布:线上测试,加隐藏,仅针对测试,如果发现索引没问题也是有必要的,可以变成正式索引;可以在session级别把隐藏索引打开,不影响正式的会话
        实战:create index  index_name  on  table_name(字段)  invisible;

  • 降序索引:

        a、以前版本在创建B+Tree的时候默认是升序的,8以后索引可以是降序的;
        b、实战:

  • 函数索引: 

        a、之前讲过,不要在索引列上加操作,否则会导致索引失效
        b、mysql8后,如果在索引列上加了函数,mysql会新增一个隐藏列来存储函数执行后的数据,并在该列上新建索引;
        c、查询时,直接查隐藏列,不会导致索引失效,该列仅对mysql可见,对用户不可见;
        d、在5.7中group by有默认排序(升序),mysql8在group by上面没有进行排序,必须group by  order by
        实战:

3、通用表 表达式:

(1)使用场景:公司部门组织结构、城市行政组织结构,表示上下级关系,使用递归的方式查询?
    5.7使用union  all,关联自身,层级是固定的,有几个层级就有几个union all
    mysql8后,使用with recursive  视图表名称(列)  as (
        select * from t1 
        union all
        select * from t1 
    )
    意思就是将as后面的查询结果当成视图里面的列进行传递,达到递归的效果;
(2)实战:

4、函数窗口:

(1)多用于统计分析
(2)分析函数:与分组、聚合函数非常类似
(3)类似于使用partition by 代替group by,因为group by使用的时候有很多限制,比如select的时候,只能select group by的字段,如果要select更多字段,得在group by后面加;
(4)普通函数:
        sum、avg、count、
(5)专用函数:
        rank()、row_number()

5、DDL实现原子操作:

(1)drop、create、alter等DDL语句同时操作多张表,如果有一个表报错了,5.7之前会执行成功的表,而8后则所有都不执行成功,保证原子性;
(2)实战:

6、JSON增强:

(1)增加了一个数据类型json:
(2)增加了json的一些转换函数:

7、InnoDB的其他特性:

详见文档:https://dev.mysql.com/doc/refman/8.0/en/windows-funcation-descriptions.html

关闭QC(Query Cache)缓存查询

死锁检查:1、关闭死锁检查,2、通过配置innodb_lock_wait_timeout,当遇到死锁时,在很短的时间点立即返回,不再等待,提升性能;

GIS支持

Hash Join

        

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Perl 语言开发(十三):网络编程
  • GO语言中的接口(interface)
  • 【Linux】01.Linux 的常见指令
  • Javassist 修改 jar 包里的 class 文件
  • XXL-JOB:定时任务框架的实战应用与调度方式详解
  • 互联网末法时代的一些思考
  • 【机器学习】分类算法-支持向量机
  • 深入理解 Vue.js 中的 nextTick:原理与应用
  • mysql高版本(8.0+)group_by报错的处理方法
  • XBOX360-玩体感游戏时提示:您必须进行系统更新,才能使用Kinect
  • Mysql解忧杂货铺
  • STM32第九课:STM32-基于标准库的42步进电机的简单I/O控制(附电机教程,看到即赚到)
  • 一五六、Node+Vue 使用七牛上传图片,并配置个人域名
  • C#面:ASP.NET Core项目如何设置IP地址和端口号
  • 《学会 SpringBoot · 定制 SpringMVC》
  • 【个人向】《HTTP图解》阅后小结
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • canvas 绘制双线技巧
  • docker python 配置
  • Docker容器管理
  • IOS评论框不贴底(ios12新bug)
  • Next.js之基础概念(二)
  • oschina
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 基于Android乐音识别(2)
  • 为什么要用IPython/Jupyter?
  • Semaphore
  • #DBA杂记1
  • #前后端分离# 头条发布系统
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (pojstep1.1.2)2654(直叙式模拟)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (纯JS)图片裁剪
  • (四)JPA - JQPL 实现增删改查
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (源码分析)springsecurity认证授权
  • (转载)Google Chrome调试JS
  • .NET C# 使用GDAL读取FileGDB要素类
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET 事件模型教程(二)
  • .NET 中的轻量级线程安全
  • .Net6 Api Swagger配置
  • .NET命令行(CLI)常用命令
  • .sh
  • :“Failed to access IIS metabase”解决方法
  • @Autowired标签与 @Resource标签 的区别
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ACM独立出版] 2024年虚拟现实、图像和信号处理国际学术会议(VRISP 2024,8月2日-4)
  • [AIGC] SpringBoot的自动配置解析
  • [Android 13]Input系列--获取触摸窗口