数据库
文章平均质量分 79
数据库相关
ZWZhangYu
这个作者很懒,什么都没留下…
展开
-
根据表名称快速查询表所有字段是否包含特定数据筛选
根据表名称快速查询表所有字段是否包含特定数据筛选。当前需要清理某个表中所有字段,检查是否有包含@DEl@字符的脏数据,如果字段比较少的直接根据字段查询即可,但是如果有几十个字段的话,逐个检查会很慢。通过这种方式相对来说可以更加快速匹配数据和定位问题字段。2:通过字段拼接的方式构建一个筛选条件。1:根据表名称获取当前表所有的字段。3:使用这个统一的一个字段进行查询。原创 2023-09-25 20:25:56 · 503 阅读 · 0 评论 -
MySQL 根据表名称生成完整select语句
在编写SQL语句的时候我们经常写SELECT *的方式,但是这个大多仅在临时查询,对于真正使用的时候一般还是写字段名称的方式,但是字段名称一般都比较多,一个一个写比较麻烦,对于此我们可以通过INFORMATION_SCHEMA.COLUMNS快速生成某个表的(select 字段A,字段B from 表名称),提高工作效率。它是INFORMATION_SCHEMA数据库的一部分,该数据库是一个系统目录,包含有关RDBMS中的数据库、表、列和其他数据库对象的元数据。替换表名称为自己需要的特定的表名称。原创 2023-06-11 17:39:15 · 567 阅读 · 0 评论 -
一次Navicat执行带注释的DDL导致canal异常的问题分析 以及相关知识扩展总结
【1】在进行了多次的测试下,也仅仅发现只有当使用navicat并存在空行注释的情况下才会出现问题,因为日常开发中这样的情况不多并且可以避免,也就没有过多的去深究了,以后避免这样写法。【2】本次的问题值得反思的是在日常开发中,对于注释这些细节问题也需要重视起来,比如上面的空行注释,还有上面参考案例XML中的SQL注释等等,在平常的开发中要尽可能的保持标准写法,删除无用的注释。【3】本次实践中所使用的Druid的SQL解析工具,以及围绕着该工具介绍的一些SQL操作方法,确实是一个很好辅助工具...原创 2022-08-28 11:17:50 · 1103 阅读 · 0 评论 -
alibaba数据同步组件canal的实践整理
canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,基于日志增量订阅和消费的业务包括【1】数据库镜像【2】数据库实时备份【3】索引构建和实时维护(拆分异构索引、倒排索引等)【4】业务 cache 刷新【5】带业务逻辑的增量数据处理......原创 2022-08-01 20:10:30 · 929 阅读 · 1 评论 -
使用Navicat对比多环境数据库数据差异和结构差异,以及自动DML和DDL脚本
对于其中数据结构同步,在进行版本测试提测时或者大版本升级的时候,如果没有留存升级脚本,可以通过该工具一键快速生成相关的DDL语句。如果准备了升级脚本,也还是可以通过这个工具进行一次源库和目标库的对比,这样可以保证升级时不会有缺失的,做一个保障。......原创 2022-06-23 19:41:53 · 5102 阅读 · 0 评论 -
SpringBoot+Flyway 自动化数据库脚本版本控制工具
Flyway主要是用来记录每次迭代的版本sql的表结构的变动.在部署某个版本时,能够快找到这个版本对应的sql,避免出现表结构的错误。Flyway原理简单阐述:开发者将每个版本的 DDL 放到项目中,项目在新环境启动时,会自动创建一张表用于记录 DDL 的版本信息,随后自动执行未执行过的 DDL,同时将执行过的 DDL 信息存入元数据表中。下次再启动时,检测到执行过了,就不会重复执行。.........原创 2022-06-20 20:02:49 · 2636 阅读 · 1 评论 -
SQL解析处理和扩展开发工具 Java
SQL语句AST抽象语法树解析;SQL解析;SQL翻译 MySQL语句翻译成Oracle;SQL语句格式化;SQL语句验证;获取表名、查询字段、查询条件;修改表名;为SQL增加额外的where条件;解析select项、表信息、条件信息原创 2022-05-22 13:13:54 · 6764 阅读 · 13 评论 -
MySql主从复制实践 原理分析 搭建过程 优化和监控
MySQL复制拓扑有很多的方式,例如主从实时同步可以缓解数据库压力,灾备恢复,读写分离;通过延迟复制可以替换传统的脚本化数据库备份策略;通过多源复制方式可以方便对多系统数据库做聚合分析等等...原创 2022-03-21 22:35:31 · 2417 阅读 · 1 评论 -
MySQL主从复制架构搭建问题整理
当搭建MySQL主从架构的时候的,检查是否配置成功的方式是在从库检查 show slave status\G;要求红色框内Slave_IO_Running: Yes;Slave_SQL_Running: Yes。如果配置不成功,可以通过观察Last_error属性描述来定位分析问题。以上面的异常举例,可以看到如下错误信息中提示我们可以在performance_schema.replication_applier_status_by_worker中查看更多错误细节Coordinator stopp原创 2022-03-14 14:28:34 · 5205 阅读 · 0 评论 -
如何查找和杀死 MySQL查询/死锁/大事务
在Mysql中每个连接都是单独线程运行,我们可以使用语句 KILL processlist_id 来终止SQL语句执行。INNODB_TRX 表提供有关当前在 InnoDB 内部执行的每个事务的信息,包括事务是否正在等待锁、正在运行的事务等等。...原创 2022-03-07 21:06:12 · 5424 阅读 · 0 评论 -
SQL行转列方式优化查询性能实践
在尝试使用join关联查询查询效率也很慢,尝试使用函数索引的方式但是因为是动态关联,函数参数是动态的也不适用。在分析数据后发现单列数据虽然存在多个,但是数据的格式是固定的,即以逗号分割,这个逗号可能出现在开头,中间,结尾。于是想到了行转列的方式,以逗号进行拆分将数据进行转换,然后进行关联匹配。原创 2022-02-16 17:46:44 · 2061 阅读 · 0 评论 -
MySQL高可用架构知识整理
文章目录(1)MySQL 复制架构(2)MySQL复制类型(3)主库大事务处理(4)主从复制延迟优化(5)数据库高可用架构设计(6)容灾级别(7)数据核对(8)高可用套件——VIP(9)高可用套件MHA和Orchestrator(10) InnoDB Cluster和MGR技术(11)数据库备份(1)MySQL 复制架构【1】数据库复制本质上就是数据同步。MySQL 数据库是基于二进制日志(binary log)进行数据增量同步,而二进制日志记录了所有对于 MySQL 数据库的修改操作。在默认 ROW原创 2022-02-08 21:20:07 · 3973 阅读 · 0 评论 -
如何通过MySQL构建 Memcached KV 数据库
MySQL 5.6 版本开始支持通过插件 Memcached Plugin,以 KV 方式访问表,这时可以将 MySQL视作一个 Memcached KV 数据库。基于 Memcached 的 KV 访问,可以绕过 SQL 解析,通过映射关系,直接访问存储在 InnoDB 引擎中的数据,这样数据库的整体性能会在不花费额外成本的前提下得到极大的提升。...原创 2022-01-16 21:08:12 · 1979 阅读 · 0 评论 -
如何使用 SQL 快速删除数百万行数据
描述删除表大批量数据,这是一个比较少的事件。 但在实际的业务开发中或者数据测试也会遇到这种情况。比如定期从日志大表中删除几百万的数据记录;删除表数据的方式有多种,操作起来也很简单。但是这里存在一个问题, 删除大量行可能会很慢。 并且有可能需要更长的时间,因为另一个会话已锁定您要删除的数据。根据我们所熟知的使用SQL删除数据有三个方式:1:DELETE,可以添加where条件,速度较慢,锁表2:truncate ,会删除表所有数据,速度快3:drop,删除数据以及表结构,慎用实践【1】对于tru原创 2022-01-11 23:10:16 · 11748 阅读 · 0 评论 -
MySQL新特性JSON类型知识整理 (认识、适用场景、使用方式、函数参考以及案例参考)
JSON 类型是 MySQL 5.7 版本新增的数据类型,用好 JSON 数据类型可以有效解决很多业务中实际问题。使用 JSON 数据类型,推荐用 MySQL 8.0.17 以上的版本,性能更好,同时也支持 Multi-Valued Indexes;JSON 数据类型的好处是无须预先定义列,数据本身就具有很好的描述性;不要将有明显关系型的数据用 JSON 存储,如用户余额、用户姓名、用户身份证等,这些都是每个用户必须包含的数据;JSON 数据类型推荐使用在不经常更新的静态数据存储...原创 2022-01-09 17:20:16 · 5521 阅读 · 0 评论 -
工作常用SQL整理
文章目录【1】mysql查询某一个字段是否包含中文汉字【2】表的结构和数据复制【3】sql根据身份证号计算现在的年龄【4】SQL年龄计算【5】重复数据清理【6】Left join注意事项【7】MySQL中不等于过滤null的问题【8】使用INFORMATION_SCHEMA导出表结构定义【10】使用left和LOCATE分析数据【11】sql 查询 group by分组 后 获得每组中时间最大记录【12】order by排序时,数据存在null,排序在最前面【1】mysql查询某一个字段是否包含中文汉字原创 2021-12-27 21:08:17 · 2663 阅读 · 0 评论 -
MySQL数据库服务器性能因素
文章目录(1)数据库性能的监控指标(2)影响数据库性能的因素(3)数据库中大表的问题分析(4)大事务带来的问题(5)影响数据库性能的几个方面(1)数据库性能的监控指标【1】QPS:每秒查询数【2】TPS:每秒处理事务数【3】数据库并发量:同一时间处理的请求的数量【4】数据库服务器的CPU使用率【5】数据库服务器的磁盘IO:其中影响磁盘IO可能是因为数据库执行备份远程同步计划任务,或者在主库上进行数据库的备份(2)影响数据库性能的因素【1】SQL查询速度【2】服务器硬件性能【3】网卡流量原创 2021-11-22 19:57:49 · 1446 阅读 · 1 评论 -
MySQL慢查询日志分析
(1)慢查询日志MySQL提供了慢SQL的日志记录功能,我们可以通过设置一些属性来记录系统使用过程中慢查询的执行日志。使用MySQL慢查询日志对有效率问题的SQL进行监控。查看属性【1】查看MySQL是否开启慢查询日志记录功能show variables like 'slow_query_log';【2】查看慢查询SQL记录日志文件位置show variables like 'slow_query_log_file';【3】查看超过多少秒的查询记录到慢查询日志中show variab原创 2021-11-21 18:50:42 · 3361 阅读 · 0 评论 -
MySQL系统SYS数据库——各类统计视图整理
查看表的统计信息,默认情况下按照增删改查操作的总表I/O延迟时间(执行时间,即也可以理解为是存在最多表I/O争用的表)降序排序查看不活跃的索引(没有任何事件发生的索引,这表示该索引从未使用过),默认情况下按照schema名称和表名进行排序查看表的统计信息,默认情况下按照增删改查操作的总表I/O延迟时间(执行时间,即也可以理解为是存在最多表I/O争用的表)降序排序查看不活跃的索引(没有任何事件发生的索引,这表示该索引从未使用过),默认情况下按照schema名称和表名进行排序原创 2021-11-16 22:45:19 · 4057 阅读 · 0 评论 -
MySQL系统SYS数据库——session视图和processlist 视图
文章目录1. 认识2. 属性3. 常用SQL工具1. 认识processlist为MySQL进程列表,该表指示服务器中执行的线程集当前正在执行的操作。该表汇总了执行信息。它们提供了比SHOW PROCESSLIST语句和information SCHEMA PROCESSLIST表更完整的信息,并且也是非阻塞的。默认情况下,行按降序处理时间和降序等待时间排序。session视图是直接调用processlist视图过滤了后台线程和command为Daemon的线程。二者可以放在一起了解,其中展示的信息和原创 2021-11-15 21:19:05 · 2486 阅读 · 0 评论 -
MySQL进阶——B+树索引结构
索引是提升查询速度的一种数据结构。索引之所以能提升查询速度,在于它在插入时对数据进行了排序(显而易见,它的缺点是影响插入或者更新的性能)。所以,索引是一门排序的艺术,有效地设计并创建索引,会提升数据库系统的整体性能。在目前的 MySQL 8.0 版本中,InnoDB 存储引擎支持的索引有 B+ 树索引、全文索引、R 树索引。...原创 2021-11-14 21:26:17 · 2798 阅读 · 0 评论 -
MySQL进阶——EXPLAIN详解
EXPLAIN 命令是查看查询优化器如何决定执行 查询的主要方法。这个功能有局限性,并不总会说出真相,但它的输出 是可以获取的最好信息,值得花时间了解,因为可以学习到查询是如何 执行的。学会解释EXPLAIN 将帮助你了解MySQL优化器是如何工作的在查询中每个表在输出中只有一行。如果查询是两个表的联接,那 么输出中将有两行。别名表单算为一个表,因此,如果把一个表与自己 联接,输出中也会有两行。原创 2021-11-14 16:42:07 · 1449 阅读 · 0 评论 -
MySql表结构设计篇
文章目录(一)数值类型(1)数据类型(2)业务中金额字段的设计(3)自增整型主键列和字符串主键列设计(二)字符串类型(1)基础知识(2)场景应用(三)日期和时间类型(一)数值类型(1)数据类型MySQL 数据库支持 SQL 标准支持的整型类型:INT、SMALLINT。此外,MySQL 数据库也支持诸如 TINYINT、MEDIUMINT 和 BIGINT 整型类型:除了整型类型,数字类型常用的还有浮点和高精度类型。MySQL 之前的版本中存在浮点类型 Float 和 Double,但这些类型因为原创 2021-11-07 16:57:55 · 4632 阅读 · 0 评论 -
MySQL 自定义排序的三种方式
文章目录【问题描述】【需求描述】【代码】函数参考【问题描述】在某些情况下,我们希望构建的排序结果不是纯粹的根据某个字段或者多个字段进行正序或者逆序排列,而是希望按照特定数据下的某个规则进行排序【需求描述】当前有一个课程系统,有一个status字段描述了课程的状态1:未开始 2:进行中 3:已完成除了课程的状态还有一个课程的开始时间start_time期待结果:进行中的课程优先排列,如果存在多个进行中的课程则优先展示开始时间靠前的那一个【代码】SELECT status,start_ti原创 2021-09-19 11:10:16 · 2274 阅读 · 0 评论 -
MySQL修改时区的三种方式总结
文章目录(一)使用Set GLOBAL命令(二)使用Set session命令(三)修改Mysql配置文件my.cnf(一)使用Set GLOBAL命令直接通过SQL语句修改,执行以下命令将GLOBAL time_zone变量设置为GMT ‘+8:00’ 北京时间mysql> SET GLOBAL time_zone = '+8:00';【可以通过俩种方式检查是否生效】SELECT @@global.time_zone;show variables like '%time_zone原创 2021-06-26 10:09:38 · 3396 阅读 · 0 评论 -
SQL批量插入—针对重复数据插入的总结
文章目录1. 需求分析2. on duplicate key update(1)说明(2)示例2. insert … select … where not exist(1)说明(2)示例3. replace into(1)说明(2)示例1. 需求分析需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入。那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率。原创 2021-06-25 17:22:25 · 8143 阅读 · 3 评论 -
MySQL开发必备-INFORMATION_SCHEMA库总结
INFORMATION_SCHEMA 提供对数据库元数据、有关MySQL服务器的信息(如数据库或表的名称、列的数据类型或访问权限)的访问。有时用于此信息的其他术语是数据字典和系统目录。原创 2021-06-19 11:22:04 · 2167 阅读 · 0 评论 -
达梦数据库的备份还原
文章目录一、前言二、联机备份恢复(热备)(一)备份1. 操作步骤-图形化方式2. 操作步骤-SQL3. 检查归档设置4. 数据备份(二)恢复三、dimp/dexp备份(一)备份(二)数据恢复一、前言数据备份是数据安全的重要保障,是数据库管理员必须进行的日常工作之一,拥有良好的备份习惯才能在数据库发生状况时确保数据不会发生遗失和进行后续的恢复还原工作。脱机备份使用的室DM的dmrman工具,在进行备份之前,先启动dmap服务以及确保实例是关闭的。这里不再叙述脱机备份,因为在日常项目工作中很少会去关闭数据原创 2021-05-01 17:43:16 · 3227 阅读 · 3 评论 -
Redis高级——AOF持久化
除了RDB持久化功能之外,Redis还提供了AOF ( Append Only File)持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis 服务器所执行的写命令来记录数据库状态的原创 2021-04-10 17:35:05 · 2205 阅读 · 0 评论 -
Redis高级——RDB持久化
RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行.该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。RDB持久化功能所生成的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态原创 2021-04-10 16:17:43 · 1857 阅读 · 0 评论 -
Oracle实现跨库查询
场景模拟:当前登录的库是ocrla,然后我的需求是希望直接通过SQL能够查询到ocrlb库的数据。Oracle在进行跨库访问时,可以通过创建dblink实现。【第一步:用户权限】查看当前用户是否拥有database link 权限select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='ZHANGYU';-- 如果user_sys_privs数据不多可以直接查找用户,注意这里原创 2021-03-18 09:56:39 · 9877 阅读 · 1 评论 -
MySQL索引原理总结
文章目录一、索引介绍(一)释义(二)数据结构演示二叉树红黑树(三)数据库索引为什么要用 B+ 树而不用红黑树呢?二、B树(一)B-Tree(二)B+树(三)分析(四)B+树和B树区分(五)千万数据查询实例分析三、MyISAM和InnoDB(一)MyISAM(二)InnoDB(三)为什么InnoDB表必须有主键,并且推荐使用整型的自增主键?(四)为什么非主键索引结构叶子节点存储的是主键值?(一致性和节省存储空间)四、扩展和原理分析(一)联合索引和索引最左前缀原理(二)MySQL索引方式中Hash索引和B树的区原创 2020-05-24 10:44:45 · 2233 阅读 · 0 评论 -
MySQL集群
(一)介绍原理MySQL集群是一个无共享的、分布式节点架构的存储方案,其目的是提供容错性和高性能.是MySQL适合于分布式计算环境的高可用、高性能版本,它采用了NDB Cluster存储引擎MySQL集群主要包括三个组成部分:管理节点、数据节点、SQL节点管理节点(MGM):管理MySQL Cluster内的其他节点,提供配置数据,启动并停止节点、运行备份等数据节点:保存Cluster的...原创 2020-02-25 16:43:02 · 2116 阅读 · 0 评论 -
MySQL主从复制
(一)MySQL主从复制理论实现原理主从复制就是把一台服务器上的数据的变化实时更新到其他服务器上,使得所有服务器的数据保持同步解析原理:1:在主库上把数据更改记录到二进制日志(Binary Log)中,这些记录被称为二进制日志事件2:从库将主库上的日志复制到自己的中继日志(Relay Log)中3:从库读取中继日志中的事件,将其重放到从库数据之上优点及使用场景1:通过复制实现数...原创 2020-02-25 16:34:02 · 1094 阅读 · 0 评论 -
MySQL性能优化
(一)概述1:表结构优化2:索引优化3:查询优化(二)表结构优化数字类型1:对于整数,在数据量较大的情况下,建议区分TINYINT、INT、BIGINT,因为三者所占用的存储空间有很大的差别2:能确定不会使用负数的字段,建议添加UNSIGNED定义3:固定精度的小数,不建议使用DECIMAL,建议乘以固定倍数转换成整数存储,可以大大节省存储空间,且不会带来任何的附加维护成本字符...原创 2020-02-20 00:21:36 · 1074 阅读 · 0 评论 -
【SQL】获取最近一周日期列表
文章目录MySQLOracleMySQL使用MySQL需要构建辅助表weekdays,表数据参考如下 select date_sub(curdate(),interval id day) rq from `weekdays`查询结果如下OracleSELECT add_days( trunc( sysdate, 'dd'), 1 - 1 * LEVEL - 1) tFROM dual CONNECT BY LEVEL < 7...原创 2021-01-19 17:50:18 · 2892 阅读 · 0 评论