本地的网站建设网站开发推广招聘

pingmian/2026/1/22 8:19:32/文章来源:
本地的网站建设,网站开发推广招聘,建筑工程信息频道,江西合创建设工程有限公司 网站这里写目录标题前言mysql8.0的新特性1、账户安全2、优化器索引2.1、隐藏索引#xff08;invisible#xff09;2.2、降序索引2.3、函数索引3、SQL语句增强4、新增数据分析函数5、InnoDB增强5.1、优化了一些元数据文件5.2、将系统表mysql和数据字典表#xff0c;全部改为InnoD… 这里写目录标题前言mysql8.0的新特性1、账户安全2、优化器索引2.1、隐藏索引invisible2.2、降序索引2.3、函数索引3、SQL语句增强4、新增数据分析函数5、InnoDB增强5.1、优化了一些元数据文件5.2、将系统表mysql和数据字典表全部改为InnoDB引擎5.3、提高了对数据字典表的访问性能5.4、DDL操作可以是原子性的了5.5、自增列持久化5.6、自增列自动感知最大值5.7、死锁检查5.8、锁定语句新增选项只针对行锁5.9、支持部分快速DDL5.10、InnoDB临时表空间优化5.11、新增静态变量innodb_dedicated_server5.12、其他6、JSON相关6.1、新增内联路径操作符6.2、新增json函数前言 想必现在很多人还在用着mysql5.7或者更早的版本包括我现在所在公司也是用着5.7版本毕竟稳定。 其实mysql8.0.1在2016年就发版了但一直到2018年发版的8.0.11才算真正意义上的正式版。 从mysql5到mysql8其实中间还有mysql6过渡版本和mysql7集群版本但对于我们而言可以直接理解为mysql从5.7升级到mysql8.0.11现在官网最新的版本已经到了mysql8.0.18。 mysql下载官网 mysql8.0的新特性 1、账户安全 1.1、用户创建和用户授权分开执行了 5.7版本可以通过grant一个语句创建用户并授权 8.0版本不能使用grant语句创建用户并授权了需要先create语句创建用户再grant授权 这样做应该就是为了让语句更加清晰各司其职。 1.2、身份认证插件更新 通过语句查看身份认证插件show variables like ‘default_authentication%’ 5.7版本默认的身份认证插件是mysql_native_password 8.0版本默认的身份认证插件改成了caching_sha2_password 新版本的插件说是对插件进行了安全和性能方面的升级。 我们在用客户端连接新版本的mysql的时候如果没有升级客户端可能会报错连接认证失败。 当然新版本的认证插件也可以改回去可以在mysql的配置文件中改然后重启。 /etc/my.cnf中搜索mysql_native_password去调该行注释即可 也可以动态修改某个用户的身份认证插件 alter user ‘用户名’’%’ identified with mysql_native_password by ‘新密码’ 修改后可以通过下面语句查看单个用户的身份认证插件被修改了 select user,host,plugin from mysql.user; 1.3、密码管理策略加强了 新增限制功能不允许重复使用以前的密码具体变量含义如下 不能与前3次的密码重复password_history3; (默认0) 不能与30天内的密码重复password_reuse_interval30; (默认0) 修改密码时需要提供当前用户密码root用户不受这个参数限制password_require_currentON; (默认OFF) 查看变量show variables like ‘password%’; 1.3.1、修改这些变量可以直接修改mysql的配置文件直接在文件末尾追加password_history3就好了这样改是全局所有用户都修改而且需要重启服务 1.3.2、修改这些变量也可以动态修改变量set persist password_history3; set persist 也是mysql8.0的新功能设置的变量是持久化的重启也会生效。 这个就比之前版本的set global …这种重启丢失靠谱多了。 其实set persist 的原理就是在目录/var/lib/mysql下新生成了一个文件mysqld-auto.cnf的配置文件达到持久化的目的在这个文件中用json的格式把设置的变量保存了下次重启mysql除了读取本身的配置文件也会读这个。 1.3.3、修改这些变量也可以修改用户级别alter uesr ‘用户名’’%’ password history 5; 这个策略的原理其实就是新增了一张历史密码记录表mysql.password_history每次密码的修改都会在这个表里记录起来。 1.4、新功能角色管理 这个角色的概念就和RBAC思想中的角色概念一样就是为了解决用户对应很多权限时管理混乱的问题。 使用步骤如下 定义角色create role ‘角色名称’; 角色绑定权限grant insert,update,delete on 数据库.* to ‘角色名称’; 用户绑定角色绑定完需要开启才能生效grant ‘角色名称’ to ‘用户名称’; 给某个用户开启默认角色set default role ‘角色名称’ to ‘用户名称’; 给某个用户开启所有角色set default role all to ‘用户名称’; 也可以用户登录启用角色set role ‘角色名称’; 最后查询验证用户的权限show grants for ‘角色名称’; 也可以查询该用户的角色拥有的具体权限show grants for ‘用户名称’ using ‘角色名称’; 撤销角色的权限revoke insert,update on 数据库.* from ‘角色名称’; 撤销角色的权限后相应角色对应的用户也就没有该权限了。 其实创建的那个角色是存在了mysql.user表中的也就是说mysql还是任务这个角色也是个用户只不过没有密码。 用户属于哪个角色在mysql.default_role表中。 角色授予了哪些用户在mysql.role_edges表中。 2、优化器索引 2.1、隐藏索引invisible 也叫不可见索引 8.0开始支持隐藏索引不会被优化器使用但数据修改时仍然需要后台维护。 可以通过看sql查询的执行计划explain sql看到效果。 将索引设置为可见alter table 表名 alter index 索引名 visible; 将索引设置为不可见alter table 表名 alter index 索引名 invisible; 主键不可以设置为不可见。 应用场景软删除索引灰度发布 如果生产环境中需要删除索引但害怕删除错了还需要新建这个索引那就可以先将这个索引设置为隐藏索引当上线完确认该索引的删除没有任何影响时可以再次真正删除这个索引。 生产环境中如果我们要新增一个索引可以先设置成隐藏索引然后灰度发布这时隐藏索引是不可用的但我们需要维护他。此时可以通过修改一个变量从而让当前会话的优化器发现这个索引从而看到效果但不会影响到其他会话相关步骤如下 执行select optimezer_switch\G 看到里面有个开关变量use_invisible_indexesoff 当前会话级别打开这个开关set session optimezer_switch“use_invisible_indexeson”; 2.2、降序索引 8.0之前的版本创建索引时可以指定是降序索引还是升序索引但最终是都创建了升序索引。 8.0开始支持真正的降序索引但只支持InnoDB引擎的BTREE支持降序索引。 实现真正的降序索引带来的好处是 之前版本如果查询时指定索引字段a是升序排序索引字段b是降序排序那么其实在看执行计划的时候可以发现真正执行时不仅用了索引还会用到其他的文件排序。 但8.0之后有了真正的降序索引后这种情况就只用索引就解决了。 8.0之前版本对于group by语句有一个隐式的排序。 8.0开始由于有了降序索引对于group by语句不在进行隐式排序了因为之前版本都是默认升序新版本既有升序又有降序就不能默认给group by指定了如果还有排序必须使用order by了。 2.3、函数索引 8.0.13版本开始支持函数索引了。 这个索引同时也支持降序索引也支持JSON数据的节点的索引。 这个函数索引是基于虚拟列功能实现的。 就是相当于给创建函数索引的这个字段新增加了一列值是对应字段通过函数运算后的结果这样就很好理解了吧其实我们之前的版本也有类似的解决方案就是新增一列每次新增的时候这一列存放的总是某列通过函数运算的结果最后就可以根据这列来查询了 alert table 表名 add column 新列名 类型 generated always as (函数(原始列名)); 这个sql就是让新列名总是等于原始列名数值运算函数的结果。 8.0.13只不过是对上面这种方案进行了包装不用这样新增一列并指定了直接可以创建一个原始列的函数索引达到相同的目的让人看起来更简洁而已。 创建普通索引create index 索引名字 on 表名(字段名) 创建函数索引create index 索引名字 on 表名(函数名(字段名)) 函数就是一些方法比如upper就是将字段转成大写。 使用场景 表中字段是商品名字product它的值有大写也有小写。 当我们在匹配查询的时候如果没有创建函数索引那查询where upper(product)‘ABCD’时必然是全表扫描。 如果我们事先针对这个字段创建了upper索引那查询的时候就能用上这个索引了。 JSON数据创建索引时可以指定给JSON中的哪个字段创建索引。目前个人感觉这个功能有点鸡肋。因为一般我们在设计表结构的时候就是避免存json这种类型的数据的即使存了那肯定是类似于文本的数据更不会根据里面的某个值进行查询了。所以这个功能可以忽略吧只能作为一个慢查询补救的优化方案。 3、SQL语句增强 8.0开始支持WITH子句with XX as ABC select * from XXXX相当于别名 其实就相当于可以用WITH关键字定义一个或多个变量不同的变量都可以指定一个表前面定义的变量可以被后面的变量使用然后后面查询的时候可以用这些个变量指定的表。 还有一种递归的WITH写法其实就相当于java中的for循环语句int i1;i100;i 所以其实就是sql中可以写递归了简单举例 with recursive 自定义别名(i) AS (select 1union allselect i1 from 自定义别名 where i100 ) select * from 自定义别名上面这个sql最终返回的是一个列表[1,2,3…100]。 自定义别名(i)中的i就是循环变量where i100就是最终结束的条件 每次i1都会判断是否100如果满足条件则相当于查出一个i的值直到不满足条件最终把所有的值集合输出。 对于这个sql增强我目前没有看出特别合适用它的场景因为目前的开发模式对于数据库来说只需要提供简单的增删改查和事务即可其他功能相对用的少点所以我断定这个功能目前来没啥意思。 4、新增数据分析函数 新增关键字OVER用法 OVER(partition by 字段名 order by 字段名 自定义 ) partition by用于分组和我们常用的的group by一个意思 order by这个直接连名字都不改了就是对分完组的每个组内的数据排序 最后这个自定义也是作用于分完组的每个组内可以更详细的对组内的数据进行筛选比如可以指定组内从第一个到当前每次都可以取出从第一个到当前行的总和等等功能。并新增了一些函数方法比如排名函数等同时之前的像SUM等也可以当成这个分析函数。 其实就是对group by的一些聚合函数做了变种group by是有几组就是几条结果这个新增的分析函数是原数据有几条就展示几条并没有聚合。 总体而言这个也没啥根本上的改进还是在原来的基础上增强而且貌似增加了复杂性平均学习成本稍高或许对部分报表业务用这个会比较合适但对于大部分人估计没多少人会用这个。 5、InnoDB增强 5.1、优化了一些元数据文件 在/var/lib/mysql/某个数据库下删掉了很多基于文件的数据信息比如.frm文件.MYD文件.MYI文件其实是将这些文件信息存在了一个叫 库名.ibd 的文件下了 5.2、将系统表mysql和数据字典表全部改为InnoDB引擎 5.3、提高了对数据字典表的访问性能 5.4、DDL操作可以是原子性的了 比如DDL修改两个字段第一个成功第二个失败那最终结果是都失败。8.0版本之前这种情况第一个仍然成功第二个失败这就是差别。 5.5、自增列持久化 8.0版本之前自增列计数器是保存在内存中的服务重启后需要重新读取自增列最大值然后生成最新的自增列最大声这样做特殊情况下可能会重复这还是一个8.0版本前长久的bug。 简答说下老版本这个bug 比如自增列是id已有id自增到10某个时刻删除这个10的数据然后重启然后再新增一条数据 如果不重启新增的数据的自增id应该是11 但如果重启后新增的数据的自增id就还是10因为重启后系统扫描这个表会发现最大id是9然后新增的话自然就是10了 这其实是我们不愿意看到的情况因为id为10的这条记录虽然被删了但如果新增数据我们还是希望id是11而不是108.0版本是把自增列计数器在每次变化的时候写入redo log中这个持久化操作其实是说解决了自增列可能会重复的bug 5.6、自增列自动感知最大值 老版本的自增列比如自增到10了如果这时手动把之前id为1的数据的id改为11那么再次新增会报错因为新增的这条数据自增计数器给分配的id是11但其实数据库中已经有11了。 新版本针对这个做了优化不会报错了而且会感知到id变为11的操作然后新增会接着从12开始。 5.7、死锁检查 8.0新增加了一个动态变量innodb_deadlock_detect用于控制系统是否执行InnoDB的死锁检查默认打开。 开了这个死锁检查后如果出现两个事物死锁系统会立刻让一个事物失败。 死锁检查会对性能有较为明显的影响为了提高性能可以将这个功能关闭。 老版本针对这种死锁的情况其实是有一个超时时间的超过这个时间也会让一个事物失效。这个超时时间由一个变量控制innodb_lock_wait_timeout,好像默认是50秒我猜新版本这个死锁检查会不会就是相当于把这个值给调小到某个值然后用另一个开关控制一下。 5.8、锁定语句新增选项只针对行锁 老版本中有一种sql: select … for update 这个是如果查的这个语句有改就等改完再返回。 新版本针对这种情况作了加强语句后可以新增 nowait和skip locked 两种选项选项。 select … for update nowait; nowait就是不等了碰到行锁立刻返回。 select … for update skip locked; skip locked就是跳过这条正在修改的只把没行锁的返回。 这个功能还有点用比如类似于查询火车票余票的场景如果查询的同时发现有些票正在被修改那就直接返回或者跳过这些票。 5.9、支持部分快速DDL alert table … algorithminstant 这样就可以避免一些数据复制比以前普通的DDL操作要快很多线上环境很适合这样搞。 5.10、InnoDB临时表空间优化 使用了共享的临时表空间ibtemp1。 5.11、新增静态变量innodb_dedicated_server 如果有一台服务器是专门只装mysql的那么打开这个参数系统会自动配置InnoDB内存参数innodb_buffer_pool_sizeinnodb_log_file_size等会尽量占用系统资源从而提高系统性能 5.12、其他 6、JSON相关 6.1、新增内联路径操作符 新增JSON操作符column-path 等价于老版本的JSON_UNQUOTE(column-path) 也等价于老版本的JSON_UNQUOTE(JSON_EXTRACT(column,path)) column是json存取的字段名如果json中有个name属性 path就是$.name 6.2、新增json函数 JSON_ARRAYAGG()用于生成json数组括号中是一个列名 JSON_OBJECTAGG()用于生成json对象括号中可以是多个列名逗号隔开 JSON_PRETTY()美化json输出格式 JSON_STORAGE_SIZE()可以查看json列所占用的大小单位字节。 其实这四个个函数5.7.22就增加了 JSON_STORAGE_FREE()可以查看json列释放出来的大小单位字节实际占用的可能比这个大这个是实际大小。 JSON_MERGE_PATCH()将两个json对象合并成一个相同节点取最后一个节点的值 JSON_MERGE_PRESERV()将两个json对象合并成一个相同节点都保留 由于上面这个函数的功能就是老版本的JSON_MERGE()函数的功能所以新版版废弃了JSON_MERGE()函数 JSON_TABLE()将json数据转换为关系表可以将这个函数的返回结果当做一个普通的表并且可以使用sql查询 这个其实和前面第一第二个函数是相反的操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站免费做链接潍坊专业做薪酬绩效

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

深圳微信网站定制网络运营合同范本

后面一段时间我将会给大家分享我自己学到STL以及应用的时候遇到的问题还有他的一些精髓,可能开始的逻辑会有些乱吧,不过后面还会不断的整理和优化,让自己看明白也让更多的读者看的清楚。 最近刚闲下来,先说说什么是STL: 不知道你是否有过这样的经历。在大学,你准备着手完…

成都网站建设服务网络营销推广方案思路

Photo byJoyous From Lofter本文目录类是如何产生的如何使用type创建类理解什么是元类使用元类的意义元类实战:ORM.1. 类是如何产生的类是如何产生?这个问题肯定很傻。实则不然,很多人只知道使用继承的表面形式来创建一个类,却不知…

永安市建设局网站物流网站建设方案

文章目录 梯度点处梯度函数梯度梯度和方向导数的关系 等值线等值线法线和梯度三元函数梯度点处梯度函数梯度梯度长度等值面 梯度运算法则 梯度 梯度是一个与方向导数相关的概念,梯度本质上是向量,是由各个自变量的偏导数定义的向量;梯度通常充当方向导数(函数变化率)的最值的角…

成都市做网站施工单位招聘信息

译序 我在此前的多篇文章中讨论了商业开源的话题: 《企业开源的软件协议模型实践》《企业实践开源的动机》《商业源码协议为何得到 HashiCorp 等企业的垂青?》《企业如何实践开源协同》《中国不缺好的开源开发者》“商业探索与可持续”一节《开源不是商业…

企业网站建设营销网站开发什么开发语言好

1.简介 使用QlistWidget实现简易图片播放器,可以打开一个图片序列,通过item的单击事件实现图片的切换,通过设置list的各种属性实现图片预览的显示,美化滚动条即可实现一个简易图片播放器。 2.效果 3.实现步骤: 1.初始…

代做网站排名商城网站建设推广

测试八 当我打开T1的时候,就没有往下看题目了,主要是发现T1就是之前做过,而且我也看过题解的题目,接着就开始钻研,当然,也没什么好钻研的,大概思路还是知道的,再写写数据就已经很清晰…

中国电力建设集团公司网站网站建设支付

ref和$refs获取dom元素 为什么会有 ref 和 $refs? 因为在vue页面中使用dom查找元素,不管你是不是在子组件里面查找,查找的都是整个页面的元素,如果你想查找单独组件里面的元素是不容易实现的,除非把每个组件的class写…

公司网站建设费属于宣传费吗哈尔滨市建设安全网站

问题&#xff1a; 在VScode中使用万能头文件#include<bits/stdc.h>编写程序时报错&#xff1a;“检测到 #include 错误。请更新 includePath。已为此翻译单元(D:\Code_C\desC。。。。”。但是普通的c语言头文件#include <stdio.h>等可以正常运行。 原因&#xff1…

搭建wordpress博客360seo排名优化服务

今天小编主要来带领大家聊一聊什么是网站服务器吧&#xff01; 网站服务器又被称为Web服务器&#xff0c;是在互联网数据中心中存放网站的服务器&#xff0c;网站服务器存储了网站上的所有内容&#xff0c;具体来说&#xff0c;服务器是一台存储了Web服务器软件以及网站的组成文…

微信公众号里的小网站怎么做的html网页表格制作

文章目录 前言效果图&#xff08;动态&#xff09;完整代码代码讲解总结寄语 前言 烟花是一种庆祝、欢庆或庆典活动中常见的美丽表现&#xff0c;它们以多彩的光芒和炫丽的形状为人们带来欢乐和惊喜。在这个项目中&#xff0c;我们将使用Python编程语言创建一个简单而有趣的程…

建设网站详细流程图深圳设计公司有多少家

一、Redis是什么 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符串)、…

网站可以做推广seo的基础是什么

---恢复内容开始---这篇随笔和大家讲讲java中类的继承是什么&#xff1f;希望对你们有所帮助。目录一、java继承是什么&#xff1f;二、为什么使用java继承三、java继承的实现1.1 java继承的基本语法1.2 super的用法一、Java继承是什么&#xff1f;简单来讲&#xff0c;Java中…

网站建设的具体任务有哪些方面泰州建设局网站质监站

关注公号【逆向通信猿】更精彩!!! 通常,信号经过调制后发送,会经过信道作用,示意图可以表示为 其中 x ( t ) x(t) x(t)为基带信号, e

网站建设开发制作黑龙江住房建设部网站

思路 我们首先要知道数据中&#xff0c;哪两列能够体现父子级我们需要找到最顶层父 id 是什么&#xff0c;因为只有知道最顶层的父 id&#xff0c;我们才能进行递归我们要在不改变数据的原有结构下&#xff0c;而转换为 Tree 结构&#xff0c;那么就需要创建新的结构 代码 /…

学校营销型网站建设企业网站开发课程设计报告

注意事项&#xff1a; 总体而言&#xff0c;WPR 和 WPA 是强大的性能分析工具&#xff0c;通过它们&#xff0c;你可以深入了解系统运行时的性能特性&#xff0c;找出潜在问题并进行优化。 查看详细信息&#xff1a; wpr -start generalprofile -start pool -filemode 对应的结…

怎么在手机上做企业网站做网站备案是什么意思

1. vs/vc(windows下)自带的检测工具 将下面的语句加到需要调试的代码中 #define _CRTDBG_MAP_ALLOC // 像一个开关,去开启一些功能,这个必须放在最上面 #include <stdlib.h> #include <crtdbg.h>// 接管new操作符 原理: 就是使用新定义的DBG_NEW去替换代码中的n…

寺院网站建设方案东莞网站建设公司注册

文件图库管理单PHP源码直接解压就能用&#xff0c;单文件&#xff0c;indexm.php文件可以重新命名&#xff0c;上传到需要访问的目录中&#xff0c; 可以查看目录以及各个文件&#xff0c;图片等和下载及修改管理服务。 源码下载&#xff1a;https://download.csdn.net/downloa…

我会编程怎么做网站马鞍山市 网站建设

服务器我们经常会遇到访问不了的情况有的时候是因为我们服务器被入侵了所以访问不了&#xff0c;有的时候是因为出现了服务器配置问题&#xff0c;或者软硬件出现问题导致的无法访问的问题&#xff0c;这时候会出现500、502、503等错误代码。基于以上问题我们第一步可以先重启服…

科技公司网站推荐宁波男科医院

直接上传php一句话木马&#xff0c;提示要上传image 把文件名改成gif并加上gif文件头后&#xff0c;绕过了对image类型的检测&#xff0c;但是提示文件内含有<?&#xff0c;且bp抓包后改回php也会被检测 那我们考虑使用js执行php代码 <script languagephp>eval($_PO…