数据库-mysql
文章平均质量分 71
工作多年遇到的问题,与一些总结,注意事项等,这个是博主目前这在专研的,打算学一年来搞这个,持续更新,不喜勿定,自己的笔记
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
九师兄
可免费问问题,可以一次订阅,终身免费问问题。工作多年遇到的问题,与一些总结,注意事项等,有些是源码级别的讲解,同时整个博客是成体系的,里面有很多连接互相连接,问题都是拆开的,能让大家遇到问题的时候方便的解决问题,或者提供思路。也可以单独找我解决问题。
展开
-
【MySQL】MySQL 什么情况下不需要建索引?
索引的维护需要消耗额外的资源,并且对表的插入、更新和删除操作有一定的影响。如果表经常被频繁地执行这些写操作,而相对较少进行查询操作,那么过多的索引可能会导致性能下降,因此可以考虑减少索引的数量或选择性地创建索引。:如果某个表只会进行一次性的查询操作,而且查询的范围广泛,那么创建索引的收益可能很小。:你要建立的索引字段,但是查询的时候对该字段进行函数转换查询,这个相当于没有用到索引。我们经常说数据库的表,建立索引能增加查询速度,那么什么情况下,不需要建立索引呢?,那么创建索引对查询性能的提升可能不明显。原创 2024-09-13 00:30:00 · 581 阅读 · 0 评论 -
【MySQL】Nginx代理MySQL导致偶然无法链接
遇到一个问题,java 操作mysql ,然后调用过程是 java 到 nginx 然后到 mysql ,现在遇到异常我们部署的情况如下docker容器有2个,分别是flink_node容器 mysql_node容器。然后mysql_node容器内装机了mysql,并且暴露端口3306,但是这个端口是被nginx代理了,也是暴露出3306端口,我们再flink_node容器下访问的时候,绝大部分正常,但是偶然不正常报错信息如下我们的java伪代码如下。原创 2024-09-12 00:30:00 · 107 阅读 · 0 评论 -
【MySQL】MySQL 模糊查询、特殊字符查询 %、_下划线、点、括号 ()等
今天有个需求是查询要支持特殊字符查询等,其实我们的产品写入数据的时候,限制了不能填写特殊字符,容纳后查询的时候还要支持特殊字符。原创 2024-07-26 00:30:00 · 344 阅读 · 0 评论 -
【MySQL】mysql status 详细解释
【代码】【MySQL】mysql status 详细解释。原创 2024-06-02 17:13:36 · 85 阅读 · 0 评论 -
【MySQL】MySQL连接报错 Plugin caching_sha2_password could not be loaded
4.如果你无法升级你的MySQL客户端,你可以尝试将你的MySQL用户的身份验证插件更改为旧版的mysql_native_password。这个错误通常发生在MySQL 8.0版本及以上,因为在这些版本中,MySQL引入了新的默认身份验证插件caching_sha2_password,以提供更安全的密码存储和验证方式。6.你可以创建一个新的MySQL用户,使用旧版本的mysql_native_password作为身份验证插件。原创 2023-11-06 22:37:47 · 2600 阅读 · 0 评论 -
【MySQL】ShardingJDBC读写分离避坑实战
我们在主从架构下,我们如果所有的读取和写入如果都走主节点,那么主节点的压力就很大,如果能读写分离,那么就能大大的减缓主节点的压力。而ShardingJDBC恰巧能解决这个问题。Apache Sharding Sphere 是一款开源分布式数据库生态项目,旨在碎片化的异构数据库上层构建生态,在最大限度的复用数据库原生存算能力的前提下,进一步提供面向全局的扩展和叠加计算能力。其核心采用可插拔架构,对上以数据库协议及 SQL 方式提供诸多增强功能,包括数据分片、访问路由、数据安全等。原创 2023-09-29 13:50:49 · 177 阅读 · 0 评论 -
【MySQL】什么事MySQL的回表?
回表是指当使用索引进行查询时,首先根据索引定位到对应的行,然后需要再次通过行的物理位置进行读取,以获取该行的其他列数据。如果你创建了非聚簇索引(例如在"age"列上)并尝试根据"age"进行查询,当查询返回结果时,MySQL实际上会使用索引定位到"age"符合条件的行,然后再通过行的物理位置访问对应的"name"和"age"列数据。在MySQL数据库中,当使用非聚簇索引(如B树索引)进行查询时,如果需要获取查询结果行的其他列数据时,就可能发生回表(Look-up)操作。原创 2023-09-02 20:26:18 · 698 阅读 · 0 评论 -
【MySQL】int和int(4)究竟有什么区别?你可能一直用错了
在 MySQL 数据库中,int 和 int(4) 都表示整数类型。总而言之,int 和 int(4) 在存储上没有区别,它们都表示相同的整数类型。int(4) 中的 (4) 表示显示宽度,用于指示客户端显示查询结果时保留的位数。如果要实现特定的显示效果,例如零填充,可以使用显示宽度和适当的附加属性(如 ZEROFILL)来控制查询结果的格式。原创 2023-08-26 19:13:06 · 2442 阅读 · 0 评论 -
【MySQL】阿里:MySQL 单表数据最大不要超过多少行?为什么?
B+树叶子和非叶子结点的数据页都是16k,且数据结构一致,区别在于叶子节点放的是真实的行数据,而非叶子结点放的是主键和下一个页的地址。B+树一般有两到三层,由于其高扇出,三层就能支持2kw以上的数据,且一次查询最多1~3次磁盘IO,性能也还行。存储同样量级的数据,B树比B+树层级更高,因此磁盘IO也更多,所以B+树更适合成为mysql索引。索引结构不会影响单表最大行数,2kw也只是推荐值,超过了这个值可能会导致B+树层级更高,影响查询性能。单表最大值还受主键大小和磁盘大小限制。转载 2023-07-09 16:26:50 · 2274 阅读 · 0 评论 -
【MySQL】数据库系统原理
转载:https://github.com/CyC2018/CS-Notes事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。一个事务所做的修改在最终转载 2023-05-20 15:01:30 · 619 阅读 · 0 评论 -
【MySQL】MySQL 自增主键一定是连续的吗?
建议去看原文,人家原创不易,我也是学习防丢失。美团问数据库比较多,分享一位读者面试美团遇到的关于 MySQL 自增主键的问题。下面是正文。众所周知,自增主键可以让聚集索引尽量地保持递增顺序插入,避免了随机查询,从而提高了查询效率但实际上,MySQL 的自增主键并不能保证一定是连续递增的。转载 2023-07-30 14:58:52 · 322 阅读 · 0 评论 -
【mysql】HikariCP不断打印WARN日志Failed to validate connection JDBC4Connectio Possibly consider using a shor
接下来我在网上搜,发现各种的解决都有,大部分都是通过设置更短的时间解决的,但是很少有说为什么设置的这么短就可以解决,而且每个人的数据库配置都是不一样的,所以实际上没什么借鉴意义。然后我在搜索的时候发现有一个结果是导向了GitHub的,我想到这个问题应该是很常见的,而且GitHub上作者也会那么我就到GitHub上HikariCP 的issue里面进行搜索,发现了这么一个issue,这个issue也有作者在里面回答,作者的回答主要是检查mysql的连接时间和是否有获取并自行关闭了底层的connection。转载 2022-09-06 21:22:17 · 2696 阅读 · 0 评论 -
【MySQL】 MySQL 导出数据库
转载:MySQL 导出数据库 仅供自己学习。这篇文章有趣,我看的是A文章,然后A转载的是B,然后B转载的是C,然后C转载的是D。 我这里直接转载了D。主要是确实好用,在没有工具的情况下。MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。 Server 5.0/bin”命令进入bin文件夹 | 利用导出数据库到文件,如然后输入密码即可开始导出。进入MySQL Command Line Client,输入密码,进入到,输入命令,回车,看看有些什么数据库;建立你要还原的转载 2022-06-25 11:06:42 · 888 阅读 · 0 评论 -
【MySQL】MySQL 如何最快的复制一张表?
1.概述为了避免对源表加读锁,更稳妥的方案是先将数据写到外部文本文件,然后再写回目标表一种方法是,使用 mysqldump 命令将数据导出成一组 INSERT 语句另一种方法是直接将结果导出成.csv 文件。MySQL 提供语法,用来将查询结果导出到服务端本地目录:select * from db1.t where a>900 into outfile '/server_tmp/t.csv';得到.csv 导出文件后,你就可以用下面的 load data 命令将数据导入到目标表 db2.t 中.原创 2022-05-01 16:06:54 · 1733 阅读 · 0 评论 -
【MySQL】MySQL count(*) count(1) 实现方式以及各种 count 对比
在这个文章之前,我一直用count(1) 查询所有数据,以前我们都是说 count(*) 是最慢的。但是这个博客恰恰相反。对于来说,InnoDB 引擎会遍历整张表,把每一行的 id 值都取出来,返回给 server 层。server 层拿到 id 后,判断是不可能为空的,就按行累加。对于 count(1) 来说,InnoDB 引擎遍历整张表,但不取值。server 层对于返回的每一行,放一个数字“1”进去,判断是不可能为空的,按行累加。转载 2022-05-01 14:49:24 · 716 阅读 · 0 评论 -
【MySQL】MySQL 的 redo log 和 binlog 区别
1.概述2. 为什么需要 redo log?redo log 主要用于 MySQL 异常重启后的一种数据恢复手段,确保了数据的一致性。其实是为了配合 MySQL 的 WAL 机制。因为 MySQL 进行更新操作,为了能够快速响应,所以采用了异步写回磁盘的技术,写入内存后就返回。但是这样,会存在 crash后 内存数据丢失的隐患,而 redo log 具备 crash safe 的能力。3.crash-safe 能力为什么 redo log 具有 crash-safe 的能力,是 binlog .原创 2022-05-01 13:44:20 · 888 阅读 · 0 评论 -
【MySQL】MySQL 一些 使用 案例
1、概述卧槽,sql注入竟然把我们的系统搞挂了原创 2021-07-04 18:53:32 · 191 阅读 · 0 评论 -
80-600-020-原理-存储引擎-简介
1.概述Mysql 采用插件式存储引擎架构,可以根据不同的需求为不同的表设置不同点存储引擎。表状态查询语句(以user表为例):USE mysql;SHOW TABLE STATUS LIKE 'user';查询结果:mysql> SHOW TABLE STATUS LIKE 'user'\G;*************************** 1. row *************************** Name: user Eng原创 2021-04-29 21:11:11 · 164 阅读 · 0 评论 -
80-450-020-原理-索引-索引失效与优化
1.概述1.1 测试数据CREATE TABLE staffs ( id INT PRIMARY KEY auto_INCREMENT, NAME VARCHAR ( 24 ) NOT NULL DEFAULT '' COMMENT '姓名', age INT NOT NULL DEFAULT 0 COMMENT '年龄', pos VARCHAR ( 20 ) NOT NULL DEFAULT '', add_time TIMESTAMP NOT NULL DEFAULT CURR原创 2021-04-29 21:09:56 · 174 阅读 · 0 评论 -
80-450-010-原理-MySQL索引
我们平常所说的索引,如果没有特别指明,都是指B树(多路搜索树,并不一-定是二叉的)结构组织的索引。其中聚集索引,次要索引、复合索引,前缀索引,唯一索引默认都是使用B+树索引,统称索引。当然,除了B+树这种类型的索引之外,还有哈稀索引(hash index)等。本文出自 csdn 九师兄,防伪标志,本文由九师兄唯一发布。 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。原创 2021-04-29 21:11:34 · 186 阅读 · 0 评论 -
80-300-050-原理-MySQL执行解析
1.概述mysql执行解析顺序图原创 2021-04-28 21:51:32 · 148 阅读 · 0 评论 -
80-200-040-原理-MySQL服务端架构
1.MySQL Server端架构如果能够在头脑中构建一幅Mysql各组件之间如何协同工作的架构图,就会有助于我们深入的理解Mysql数据库。上面的图有点复杂现在我们只需要记住下面的简图即可,如下图所示:2.分层介绍2.1.连接层最上层是一-些客户端和连接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于tcp/ip的信。主要完成一些类似于 连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全原创 2021-04-28 21:51:07 · 261 阅读 · 1 评论 -
80-040-000-原理-MySQL的 ICP
1.概述1.1 什么是ICP?MySQL5.6引入了**Index Condition Pushdown(ICP)**的特性,进一步优化了查询。Pushdown表示操作下放,某些情况下的条件过滤操作下放到存储引擎。EXPLAIN SELECT * FROM rental WHERE rental_date='2005-05-25' AND customer_id>=300 AND customer_id<=400;在5.6版本之前:优化器首先使用复合索引idx_rental_date原创 2021-04-28 21:50:28 · 175 阅读 · 0 评论 -
75-100-024-测试-MySQL 双表优化案例
1.建表CREATE TABLE IF NOT EXISTS class( id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED NOT NULL, PRIMARY KEY (id));CREATE TABLE IF NOT EXISTS book ( bookid INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, card INT(10) UNSIGNED NOT NULL,原创 2021-04-28 21:49:33 · 157 阅读 · 0 评论 -
75-100-020-测试-MySQL 单表优化案例
1.建表CREATE TABLE IF NOT EXISTS article ( id INT ( 10 ) UNSIGNED NOT NULL PRIMARY KEY auto_increment, author_id INT ( 10 ) UNSIGNED NOT NULL, category_id INT ( 10 ) UNSIGNED NOT NULL, views INT ( 10 ) UNSIGNED NOT NULL, comments INT ( 10 ) UNSIGNED NO原创 2021-04-28 21:48:46 · 143 阅读 · 0 评论 -
40-400-044-运维-优化-MySQL order by 优化
1.概述本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的朋友们可以先看一下我之前写过的索引相关文章。现在让我们开始吧。2.MySQL中的两种排序方式通过有序索引顺序扫描直接返回有序数据因为索引的结构是B+树,索引中的数据是按照一定顺序进行排列的,所以在排序查询中如果能利用索引,就能避免额外的排序操作。EXPLAIN分析查询时,Extra显示为Using index。Filesort排序,对返回的数据进行排序所有不是通过索引直接返回排序结果的操作都原创 2021-04-28 21:47:28 · 145 阅读 · 0 评论 -
40-400-020-运维-优化-使用MySQLTunner优化MySQL
1.概述MySQLTuner 是一个 Perl 脚本,可以用来分析您的 MySQL 性能,并且基于收集到的信息给出相应的优化建议。这样子,您就可以调整 my.cnf 从而优化您的 MySQL 设置。官网:http://mysqltuner.com/Mysqltuner 就是一套perl脚本,不需要任何的安装,将下载下来的tar安装包解压下就行了。2. 安装MySQL我的是Mac环境,安装后目录在(base) lcc@lcc MySQLTuner-perl$ vi ~/.bash_profile原创 2021-04-28 21:46:18 · 198 阅读 · 0 评论 -
20-100-040-安装-Centos 7.5 安装MYSQL
Centos 7.5 安装MYSQLCentos7通过yum安装最新MySQL一:去官网查看最新安装包https://dev.mysql.com/downloads/repo/yum/二:下载MySQL源安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm安装MySql源yum -y install mysql57-community-release-el7-11.noarch.rpm查看原创 2021-04-28 21:45:41 · 136 阅读 · 0 评论 -
60-420-020-使用-存储过程-使用存储过程和函数插入大数据量
1.概述1.1 准备创建tb_dept_bigdata(部门表)create table tb_dept_bigdata( id int unsigned primary key auto_increment, deptno mediumint unsigned not null default 0, dname varchar(20) not null default '', loc varchar(13) not null default '')engine=innodb de.原创 2021-04-27 21:06:46 · 154 阅读 · 0 评论 -
60-400-240-使用-binlog-Canal使用文档md
1.世界2.概述3.环境要求3.1. 操作系统a. 纯java开发,windows/linux均可支持b. jdk建议使用1.6.25以上的版本,稳定可靠,目前阿里巴巴使用基本为此版本.3.2 mysql要求当前的canal开源版本支持5.7及以下的版本(阿里内部mysql 5.7.13, 5.6.10, mysql 5.5.18和5.1.40/48),ps. mysql4.x版本没有经过严格测试,理论上是可以兼容canal的原理是基于mysql binlog技术,所以这里一定需原创 2021-04-27 21:06:17 · 142 阅读 · 0 评论 -
60-400-045-使用-binlog-Maxwell读取MySQL binlog日志到Kafka
启动MySQL创建maxwell的数据库和用户在MySQL中创建一个测试数据库和表前面三个步骤详见 Maxwell读取MySQL binlog日志通过stdout展示启动Zookeeper[hadoop@hadoop001 ~]$ cd $ZK_HOME/bin[hadoop@hadoop001 bin]$ ./zkServer.sh start启动kafka,并创建主题为maxwell的topic[hadoop@hadoop001 bin]$ cd $KAFKA_HOME//查看kaf原创 2021-04-27 21:05:38 · 333 阅读 · 1 评论 -
60-400-040-使用-binlog-MySQL BinLog入门
1.世界2.概述2.1 binlog介绍binlog,即二进制日志,它记录了数据库上的所有改变.改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕.2.2 binlog格式基于语句,无法保证所有语句都在从库执行成功,比如update … limit 1;基于行,将每一次改动记为binlog中的一行.在执行一个特别复杂的update或者delete操作时,基于行的格式会有优势.2.3 Binlog相关变量变量名称变量含义相关语句原创 2021-04-27 21:05:03 · 205 阅读 · 0 评论 -
60-200-072-使用-命令-MySQL使用mysqldumpslow分析慢查询日志文件
1.概述因为直接分析日志文件是个体力活,因此mysql为我们提供了相关工具mysqldumpslow来对慢查询日志文件进行分析。2.mysqldumpslow命令访问次数最多的10条sql语句/usr/local/mysql/bin/mysqldumpslow -s c -t 10 /home/wwwlogs/mysql_slow_querys.log返回记录最多的20条sql语句/usr/local/mysql/bin/mysqldumpslow -s r -t 10 /home/wwwlog原创 2021-04-27 21:04:28 · 211 阅读 · 0 评论 -
60-200-070-使用-命令-MySQL慢查询日志
1.概述前言:慢查询日志是MySQL提供的一种日志记录,它记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的sql语句,该sql语句会被记录到慢查询日志中。慢查询日志主要与explain进行联合分析。2.如何开启慢查询日志默认情况下,MySQL数据库没有开启慢查询日志,需要我们手动来设置这个参数。如果不是调优需要,一般不建议开启该参数,因为开启慢查询日志或多或少会带来一定的性能影响。2.1 查看是否开启mysql> show variables li原创 2021-04-27 21:03:01 · 138 阅读 · 0 评论 -
60-200-060-使用-命令-MySQL事务相关命令
1.查询Mysql 中查询/临时修改事务隔离等级查询事务隔离等级show variables like 'tx_isolation';修改事务隔离等级set tx_isolation = 'READ-COMMITTED';原创 2021-04-27 21:02:29 · 149 阅读 · 0 评论 -
60-200-050-使用-命令-MySQL explain命令
1.explain使用方法mysql> explain select * from article;+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------+| id | select_type | table | partitions | type | possible_keys | key | key_len |原创 2021-04-27 21:02:03 · 160 阅读 · 0 评论 -
60-200-040-使用-命令-MySQL查看引擎的命令
1.查看存储引擎mysql> show ENGINES;+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+| Engine | Support | Comment原创 2021-04-27 21:01:21 · 228 阅读 · 0 评论 -
60-100-032-使用-MySQL大小写敏感的解决方法
1.概述参考:https://www.cnblogs.com/developer_chan/p/9247674.html前言:对于MySQL的大小写敏感的影响,笔者在一个小项目中深刻的体会到:当想要查询一条数据时,总是出来两条或多条,后来发现是大小写敏感造成的原因,本文就该问题提出解决方案。2.MySQL大小写敏感的控制mysql是通过lower_case_table_names参数来控制大小写敏感的,该参数在[mysqld]结点下。具体的含义笔者从官网截了一张图。注:关于lower_ca原创 2021-04-27 21:00:21 · 181 阅读 · 0 评论 -
60-100-030-使用-Docker MySQL 8 主从复制
1.概述因为我只有本地机器,只有一个mac,然后想做主从复制实验,结果没做好,我是使用一个docker mysql ,一个本地mysql.现在尝试一下在两个docker中做主从同步实验。基于二进制日志文件位置(Binary Log File Position)的复制配置本实验使用Root用户操作,mysql:8.0.19 镜像的MySQL版本为8.0.192.Docker镜像# docker search mysql选择STARS数最多的mysql官方镜像`# docker pull mysq原创 2021-04-28 21:48:07 · 138 阅读 · 1 评论 -
60-100-028-使用-MySQL 主从复制
1.概述前言:本章主要讲解MySQL主从复制的操作步骤。由于环境限制,主机使用Windows环境,从机使用用Linux环境。另外MySQL的版本最好一致,笔者采用的MySQL 8版本。2.主从复制的基本原理slave会从master读取binlog来进行数据同步。主要有以下三个步骤:master将改变记录到二进制日志(binary log),这些记录过程叫做二进制日志事件(binary log events)。slave将master的binary log events拷贝到中继日志(re原创 2021-04-26 21:21:21 · 133 阅读 · 0 评论