
MySql
文章平均质量分 91
MySql相关知识的记录
Evan Wang
终身学习者,优快云博客专家,系统架构师,AWS、阿里云认证云架构师,精通云原生、Spring生态、微服务、分布式体系等相关技术,擅长解决高并发场景下,各种技术问题。
展开
-
MySQL Shell教程
MySQL Shell是MySQL的高级客户端和代码编辑器。它除了基本的SQL功能外,还提供一套使用Javascript和Python的API去管理MySQL。能使用它提供的XDevAPI操作MySQL 8.0提供的关系型数据库和文档数据库,还可以使用AdminAPI管理InnoDB集群。原创 2024-11-12 21:42:05 · 2674 阅读 · 0 评论 -
二十三、Mysql8.0高可用集群架构实战
InnoDB Cluster是MySQL官方实现高可用+读写分离的架构方案,其中包含以下组件:简称MGR,是MySQL的主从同步高可用方案,包括数据同步及角色选举。:是InnoDB Cluster的管理工具,用来创建和管理集群。:是业务流量入口,支持对MGR的主从角色判断,可以配置不同的端口分别对外提供读写服务,实现读写分离。MySQL Router与组复制和MySQL Shell高度整合,只有将其与组复制和MySQL Shell共同使用,才能够称为InnoDB Cluster。原创 2024-11-04 23:23:16 · 2458 阅读 · 0 评论 -
Docker安装MySQL8.0
注:如果使用客户端连接提示了plugin caching_sha2_password错误,这是因为MySQL8.0的密码策略默认为caching_sha2_password(MySQL5.7无此问题):端口映射,第一个 3310 是映射出去的端口,第二个 3306 是这个容器的端口。:给予容器额外的权限。:文件挂载, 前为宿主机的目录位置,后为容器内文件对应位置。原创 2024-11-04 21:53:27 · 1025 阅读 · 0 评论 -
二十二、MySQL 8.0 主从复制原理分析与实战
MySQL Replication是官方提供的主从同步方案,也是用的最广的同步方案。Replication(复制)使来自一个 MySQL数据库服务器(称为源(Source))的数据能够复制到一个或多个 MySQL 服务器(称为副本(Replica))。默认情况下,复制是异步的;副本不需要永久连接即可从源接收更新。根据配置,您可以复制所有数据库、指定数据库,甚至某个数据库中的指定表。说明: 旧版本的 MySQL 复制将源(Source)称为主(Master),将副本(Replica)称为从(Slave)原创 2024-10-30 22:58:11 · 1555 阅读 · 0 评论 -
二十一、MySQL全局优化与Mysql 8.0新增特性详解
从上图可以看出SQL及索引的优化效果是最好的,而且成本最低,所以工作中我们要在这块花更多时间。假设服务器配置为:CPU:32核内存:64G下面参数都是服务端参数,默认在配置文件的 [mysqld] 标签下。原创 2024-10-30 22:33:57 · 750 阅读 · 0 评论 -
二十、Innodb底层原理与Mysql日志机制深入剖析
注意:如果要恢复大量数据,比如程序员经常说的删库跑路的话题,假设我们把数据库所有数据都删除了要怎么恢复了,如果数据库之前没有备份,所有的binlog日志都在的话,就从binlog第一个文件开始逐个恢复每个binlog文件里的数据,这种一般不太可能,因为binlog日志比较大,早期的binlog文件会定期删除的,所以一般不可能用binlog文件恢复整个数据库的。比如,一个系统配置表、字典表,那这张表上的查询才适合使用查询缓存。查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。原创 2024-10-24 23:02:07 · 1032 阅读 · 0 评论 -
十九、深入理解MVCC与BufferPool缓存机制
在可重复读隔离级别,当事务开启,执行任何查询sql时会生成当前事务的一致性视图read-view,该视图在事务结束之前都不会变化(如果是读已提交隔离级别在每次执行查询sql时都会重新生成),这个视图由执行查询时所有未提交事务id数组(数组里最小的id为min_id)和已创建的最大事务id(max_id)组成,事务里的任何sql查询结果需要从对应版本链里的最新数据开始逐条跟read-view做比对从而得到最终的快照结果。因为磁盘随机读写的性能是非常差的,所以直接更新磁盘文件是不能让数据库抗住很高并发的。原创 2024-10-24 22:45:54 · 745 阅读 · 0 评论 -
十八、深入理解Mysql事务隔离级别与锁机制
我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。接下来,我们会深入讲解这些机制,让大家彻底理解数据库内部的执行原理。原创 2024-10-19 10:00:11 · 1042 阅读 · 0 评论 -
十七、Mysql索引优化实战二
整个过程会读取 t2 表的所有数据(扫描100行),然后遍历这每行数据中字段 a 的值,根据 t2 表中 a 的值索引扫描 t1 表中的对应行(扫描100次 t1 表的索引,1次扫描可以认为最终只扫描 t1 表一行完整数据,也就是总共 t1 表也扫描了100行)。当使用left join时,左表是驱动表,右表是被驱动表,当使用right join时,右表时驱动表,左表是被驱动表,当使用join时,mysql会选择数据量比较小的表作为驱动表,大表作为被驱动表。这样,查询结果如果是5,那输出就是05。原创 2024-10-19 09:37:20 · 954 阅读 · 0 评论 -
十六、Mysql索引优化实战一
MySQL 5.6引入了索引下推优化,可以在索引遍历过程中,对索引中包含的所有字段先做判断,过滤掉不符合条件的记录之后再回表,可以有效的减少回表次数。以社交场景APP来举例,我们一般会去搜索一些好友,这里面就涉及到对用户信息的筛选,这里肯定就是对用户user表搜索了,这个表一般来说数据量会比较大,我们先不考虑分库分表的情况,比如,我们一般会筛选地区(省市),性别,年龄,身高,爱好之类的,有的APP可能用户还有评分,比如用户的受欢迎程度评分,我们可能还会根据评分来排序等等。原创 2024-10-11 23:15:24 · 1358 阅读 · 0 评论 -
mysql慢查询日志
这个是由参数long_query_time控制,默认情况下long_query_time的值为10秒,可以使用命令修改,也可以在my.cnf参数里面修改。如上所示,我修改了变量long_query_time,但是查询变量long_query_time的值还是10,难道没有修改到呢?log_output='TABLE’表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。my.cnf要增加或修改参数slow_query_log 和slow_query_log_file,如下所示。原创 2024-10-11 23:06:12 · 1400 阅读 · 0 评论 -
十五、Explain详解与索引最佳实践
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。原创 2024-10-06 23:35:18 · 1190 阅读 · 0 评论 -
十四、深入理解Mysql索引底层数据结构与算法
叶节点具有相同的深度,叶节点的指针为空。所有索引元素不重复。节点中的数据索引从左到右递增排列。原创 2024-10-06 22:11:48 · 1058 阅读 · 0 评论 -
Explain详解与索引优化最佳实践
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。原创 2023-03-31 11:39:50 · 682 阅读 · 0 评论 -
使用docker安装mysql8
一、安装docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --lower_case_table_names=1 mysql:8.0.25参数解释-v:挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录。-d:后台运行容器。-p:映射容器端口号和宿主机端口号。-e:环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码。–lower_case_table_n原创 2022-03-28 20:07:55 · 9911 阅读 · 0 评论 -
jdbc连接mysql数据库报时区错误和SSL连接错误
错误1:时区错误报错信息:com.mysql.cj.core.exceptions.InvalidConnectionAttributeException: The server time zone value '?й???????' is unrecognized or represents more than one time zone. You must configure eith...原创 2018-09-28 15:12:04 · 1283 阅读 · 0 评论 -
Navicat连接MySql8+出现2059错误解决办法
今天使用Navicat连接mysql的时候报了2059的错误,为了解决这个看似不难的问题,我也是试了不少方法,在这里给大家分享下我的经验。首先出现2059这个错误的原因是因为在mysql8之前的版本中加密规则为mysql_native_password。但是在mysql8以后的加密规则为caching_sha2_password。通过在网络上查找各种解决办法,我们可以将mysql用户登录的加密...原创 2018-08-28 21:23:12 · 21185 阅读 · 15 评论