- 博客(15)
- 资源 (3)
- 收藏
- 关注
原创 MySQL 8.0曾经最让人期待的新特性
Hash Join作为表连接的基础连接类型,各大关系型数据库(譬如Oracle、sqlserver、Postgres等)很早都支持了Hash Join这种连接类型。作为关系型数据库领域的领袖,Oracle数据库支持三种主流的连接类型:Nested Loop Join、Hash Join 和 Sort Merge Join。而作为最流行的关系型数据库的MySQL 却一直没有支持Hash Join,这点一直为人诟病。千呼万唤始出来,MySQL 8.0.18开始终于支持了Hash Join的连接算法。MySQL
2022-05-28 17:24:33
13779
原创 连接数据库失败,难道MySQL 5.7客户端与8.0数据库不兼容?
线上业务数据库升级到MySQL 8.0.28之后,业务侧使用MySQL 5.5版本的mysql_api连接数据库正常,但是我们管理端使用旧的MySQL 5.7客户端连接数据库却是失败的。难道MySQL 5.7的客户端与8.0的数据库之间不兼容?这个问题可就比较严重了,可能成为数据库升级路上的拦路虎。一下就勾起了吹水老王极大的兴致,我们一起来分析一下。
2022-05-15 11:46:21
16380
原创 《MySQL开发规范》过时了,视图的查询性能提升了一万倍
视图在数据库中是非常普及的功能。但是长期以来,大多数互联网公司的《MySQL开发规范》中都有一条规范:`在MySQL中禁止(或建议不要)使用视图`。究其原因,主要是由于在MySQL中视图的查询性能不好,同时带来了管理维护上的高成本。不过随着MySQL 8.0中派生条件下推特性的引入,尤其是最近GA的MySQL 8.0.29版本中对于包含union子句的派生条件下推优化,MySQL中视图查询的性能得到了质的提升。《MySQL开发规范》已经过时了,DBA该考虑考虑将禁止使用视图的规定重新修订一下了。
2022-05-04 18:09:53
12408
原创 你真的会用EXPLAIN么,SQL性能优化王者晋级之路
MySQL的开发人员或者DBA,经常使用EXPLAIN语句来查看SQL的执行计划。EXPLAIN的解读文章多如牛毛,每个开发人员对EXPLAIN结果都有自己的理解。然而,你真的会使用EXPLAIN吗?使用`explain for connection`可以查看指定会话的SQL执行计划。这样就可以看到当前正在实际执行的SQL的执行计划。MySQL 8.0引入的`EXPLAIN ANALYZE`向我们清晰展示了SQL的估算执行成本和实际执行消耗,对于优化SQL性能有着非常大的价值。
2022-04-23 22:32:56
8012
1
原创 索引三剑客之降序索引和不可见索引
索引三剑客之降序索引和不可见索引MySQL 8.0中引入了三个索引方面的新特性,我们将其称为“索引三剑客”。辟水剑,剑走偏锋,独辟蹊径,如刀细雨又快又密。降序索引,顾名思义,就是按照降序排列的索引。MySQL 8.0中引入降序索引特性,索引可以按照指定的升序或者降序的方式来组织索引项。万剑归宗乃是剑术最高境界,化剑气于无形,聚无形剑气如万剑自生。不可见索引,顾名思义,即看不见的索引,通过设置索引的可见性,可以用来测试索引对查询性能的影响。
2022-04-17 19:13:29
7338
1
原创 千呼万唤始出来,MySQL 8.0索引三剑客之函数索引
独孤九剑,重剑无锋,大巧不工,通晓剑意,无所施而不可。三剑客之首,函数索引。好消息是,MySQL 终于在8.0版本引入了这一特性。真的是,千呼万唤始出来,不过好歹还是来了。普通索引是对列值或列的前缀值进行索引,而MySQL 8.0.13之后支持函数索引,函数索引是对表中的列执行表达式计算后的结构进行索引,而不是对列或列前缀值。使用函数索引可以对未直接存储在表中的数据进行索引。函数索引为应用程序提供了极大的便利和性能提升。
2022-04-10 18:05:52
8254
1
原创 警惕参数变化,MySQL 8.0 升级避免再次踩坑
MySQL 8.0新特性专栏目录我们知道MySQL 8.0相对于MySQL 5.7加入了很多新特性,在功能和安全性上做了很多的优化和调整,这就不可避免地会修改一些参数或者函数。**我们现有业务数据从MySQL 5.7及之前的版本升级到8.0,需要特别警惕这些参数的变化,这些变化可能会导致业务行为发生一些意料之外的结果!!!**最近MySQL 8.0 升级的过程中,我梳理了一些业务可能用到的、重要的参数变化,包括一些MySQL 8.0中已经废弃的参数和部分常见参数默认值的变化。
2022-04-04 12:43:16
8823
原创 sql_mode兼容性,MySQL 8.0 升级踩过的坑
MySQL 8.0从GA到现在已经过去4年了,被各大互联网公司广泛使用,稳定性得到了充分的验证。最近,我们也在将存量的旧版本数据库升级到8.0。虽然前期做了很多的检查和验证,不过升级过程中终究免不了踩一些坑。sql_mode,在MySQL 5.7之前是宽松模式;在MySQL 5.7之后一直到最新的8.0.28版本,都还是严格模式。不过,在不同的数据库版本之间、不同的数据库实例之间,sql_mode总会有一些变化;升级或者迁移的过程中一不小心就会掉入坑中。
2022-03-26 19:31:36
10416
3
原创 双重密码,MySQL8.0 创新特性
双重密码,MySQL 8.0创新特性MySQL 8.0 引入了很多令人振奋的新特性,跟账户认证相关的新特性包括:新增caching_sha2_password身份认证插件,支持角色,区分系统账户和普通账户,维护密码历史信息限制重复使用以前的密码和密码过期等,双重密码,生成随机密码,登录失败跟踪和临时锁定账户。MySQL 8.0 最令人眼前一亮的特性:双重密码。这个特性在数据库领域应该也是第一次引入,为线上DB变更带来了极大的便利。
2022-03-19 20:36:55
10941
原创 oracle 11g分区表新特性---interval分区 的坑
oracle 11g的范围分区表中新增的interval分区特性,此种范围分区不需要定义MAXVALUE,Oracle会根据分区定义的步长来动态的分配新分区来容纳超过范围的数据。解决了原本的范围分区需要手工编写job来预分配分区的问题,但是其分区名时自动命名的。所以,对于间隔分区 interval(number) 或者 interval(NUMTODSINTERVAL(1,'DAY'))数字或者日期自动分区的分区查询条件可以是:select * from test_part partition for
2017-07-18 20:06:52
8991
原创 系统开关机时oracle自启动和关闭脚本(for aix和linux)
作为一名oracle DBA,更有甚者,在这个虚拟化泛滥的时代,有没有遇到过物理主机硬件故障,导致几十台数据库server发生了重启,麻烦启动下数据库?正好有时间就把oracle自启动和关闭的脚本作了一些优化,以增加脚本的适用性,并把自启动和关闭的配置写到了初始化脚本auto_start_db.sh,这样只需要简单一步执行auto_start_db.sh脚本就可以完成所有配置工作。1.AIX和Linux操作系统平台下,oracle自启动和关闭的开关在/etc/oratab文件,/etc/oratab实在
2017-06-12 16:22:55
1113
原创 RMAN新特性duplicate概述和使用
RMANDUPLICATION复制概述 DUPLICATE命令可以创建完整的运行良好的数据库副本(clone DB)或Physical standby数据库。DUPLICATE命令自动为duplicate数据库分配不同的DBID,以便它可以注册在与源数据库相同的catalog中。DUPLICATION可以是数据库级别,也可以指定表空间级别。RMAN必须执行基于时间点的恢复,即使
2017-06-06 16:48:16
13643
原创 oracle 10g的long类型处理bug
因为分区表监控的脚本不想频繁访问dba_tab_subpartitions视图,需要创建临时表T1,偶然间发现oracle 10g的一个bug,在metalink上也没能找到该问题的解决方案。1.创建临时表T1:SQL> create table T1 as select table_name,partition_name,subpartition_name,to_lob(high_v
2015-09-06 23:58:20
7397
原创 支持alter table move 的数据类型 :raw blob clob
收缩表清理空间和移动表到另外表空间时常遇到long、blob等数据类型不能迁移的情况。对此做个总结支持alter table move 的数据类型 :raw blob clob 不支持的数据类型 :long 和 long raw
2015-09-02 12:20:45
1078
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人