
数据库
文章平均质量分 56
此专栏主要是1、MySQL数据库,以MySQL 存储引擎为InnoDB,RR级别下相关知识点,主要用版本5.7.19
2、Oracle数据库
Be_insighted
强者自救,圣者渡人!
展开
-
MySQL同城双活(灾备)、数据库分片;it gets a wrong database node number!
高可用、数据库分片原创 2023-04-01 21:19:05 · 413 阅读 · 0 评论 -
MySQL备份与恢复
数据库备份与恢复原创 2023-03-04 22:16:46 · 418 阅读 · 0 评论 -
MySQL5.6和JVM(1.6)调优
MySQL优化原创 2023-03-04 14:17:11 · 500 阅读 · 0 评论 -
预约转账、基金购买、定投;收款人管理
预约汇款、定投、基金投资、收款人管理原创 2023-01-09 21:32:33 · 571 阅读 · 0 评论 -
JPA复杂查询(Specification)之排序&反射获取类属性及属性数据类型&List Stream收集字段信息并换行
JPA复杂查询(Specification)之排序&反射获取类属性及属性数据类型原创 2023-01-11 19:57:54 · 757 阅读 · 0 评论 -
Oracle数据库设计(开放式基金交易平台)
开放式基金交易平台(数据库设计)原创 2022-12-20 21:31:02 · 1075 阅读 · 0 评论 -
字符串数字分转元(汇率数字字符串处理)、JPA 使用原生SQL语句更新
字符串数字分转元、JPA 使用原生SQL语句更新原创 2022-12-14 21:43:25 · 541 阅读 · 0 评论 -
MyBatis批量保存(Oracle)MyBatis批量插入、批量更新时,组装SQL过长会有问题,一定要根据批量插入数据量进行切割,再批次提交保存!!!
Mybatis向Oracle中批量插入数据,MyBatis批量插入、更新时,组装SQL过长会有问题,一定要根据批量插入数据量进行切割,再批次提交保存!!!原创 2022-12-14 21:28:52 · 2261 阅读 · 0 评论 -
Oracle 查询表结构,增加、删除列,调整列字段类型、时间格式化、插入数据、update纪录、查询当前最大id、删除当前表sequence、违反唯一约束条件 ORA-00001、ORA-00904
Oracle 常见SQL语句示例原创 2022-11-28 22:23:47 · 687 阅读 · 0 评论 -
分段发号工具
分段发号器 JVM缓存原创 2022-11-24 08:47:51 · 338 阅读 · 0 评论 -
批量生产redis测试数据&SQL语句修改varchar类型的字段为json报错(Oracle、MySQL修改字段类型时,该列有数据无法完成操作)
批量生产redis测试数据原创 2022-11-24 08:44:22 · 563 阅读 · 0 评论 -
MySQL三范式
设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。第一范式:保证每列的原子性第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库满足了第一范式。第二范式:保证一张表只描述一件事情这是通俗的说法,用第二范式的定义描述第二范式,说的是在满足第一范式的基础上,数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,也即所有非关键字段都完全依赖于任一组候选关键字。原创 2022-05-26 11:42:13 · 554 阅读 · 0 评论 -
MySQL的事务特性及实现方式
MySQL的事务特性及实现方式事务特性ACID原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么一起失败。一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。持久性(Durability):一旦事务完成,无原创 2022-05-06 15:18:07 · 695 阅读 · 0 评论 -
MySQL与缓存双写一致性
如果仅仅查询的话,缓存的数据和数据库的数据是没问题的。但是,当我们要更新时候查询呢?各种情况很可能就造成数据库和缓存不一致了。从理论上说,只要我们设置了键的过期时间,我们就能保证缓存和数据库的数据最终是一致的。因为只要缓存数据过期了,就会被删除。随后读的时候,因为缓存里没有,就可以查数据库的数据,然后将数据库查出来的数据写入到缓存中。除了设置过期时间,我们还需要做更多的措施来尽量避免数据库与缓存处于不一致的情况发生。对于更新操作一般来说,执行更新操作时,我们会有两种选...原创 2022-04-29 16:34:40 · 442 阅读 · 0 评论 -
连表查询取两张表中最新(旧)的数据(group by 和 min|max函数)《=== 联表查询与业务处理
连表查询取两张表中最新(旧)的数据(...left jion...on...,group by 和 min|max函数)业务场景:表中数据情况,主表数据存在一条,但它关联的副表数据可能存在多条数据或者不存在,但展示时以主表的数据为准,仅展示主表数据或者副表的最新的一条数据!展示数据与主表的关系1:1连表查询取两张表中最新(旧)的数据(group by 和 min|max函数)SELECT a.* FROM A a LEFT JION (SELECT * FROM B b WHE.原创 2022-04-01 14:53:38 · 1040 阅读 · 0 评论 -
MySQL表名、字段名、字段类型、注释修改SQL语句(timestamp 默认值NULL报1067 - Invalid default value for ‘create_time‘)
MySQL表名、字段名,字段类型、注释修改SQL语句(timestamp 默认值NULL报1067 - Invalid default value for 'create_time')1、修改表名1.1 ALTER TABLE old_table_name RENAME TO new_table_name;1.2 CREATE TABLE new_table_name AS SELECT * FROM old_table_name;DROP TABLE old_table_name;2、原创 2022-03-31 17:24:25 · 4513 阅读 · 0 评论 -
问题快速定位和Java创建对象
快速定位问题1、做出假设2、设计实验3、 验证4、 结论Java创建对象方法1、new2、反射创建对象 Class类的newInstance方法 Constructor类的newInstance3、Clone4、反序列化原创 2022-02-24 20:08:42 · 245 阅读 · 1 评论 -
2013 - Lost connection to MySQL server at ‘reading authorization packet‘, system error: 0 “Internal
2013 - Lost connection to MySQL server at 'reading authorization packet', system error: 0 "Internal error/check (Not system error)"此时服务端与MySQL无法通信!!!原创 2022-02-22 18:19:43 · 1875 阅读 · 2 评论 -
查询使用or还是union
SELECT DISTINCT *FROM testWHERE cid = 123456AND ( (eid = 7890123) OR sid IN ( SELECT sid FROM test WHERE cid = 123456 GROUP BY sid HAVING .原创 2022-02-15 23:07:28 · 390 阅读 · 0 评论 -
1045-Acess denied for user:‘root‘@‘localhost‘(Using password:YES)
部署服务器时,使用Navicat连接MySQL报错:1045-Acess denied for user:'root'@'localhost'(Using password:YES)之类的错误!由于我在Navicat里面用的是localhost,连接MySQL失败,报如上错误!本机hosts未配置127.0.0.1与localhost对应,使用127.0.0.1后连接成功!或者配置hosts文件,localhost与127.0.0.1对应起来!MySQL其他问题,不是服务什么的,先确认MySQ原创 2022-01-21 18:18:06 · 1488 阅读 · 0 评论 -
MySQL快速清空大表数据(truncate table table_name;)
MySQL快速清空大表数据MySQL删除或清空表数据一、清空表数据的五种方式:1、truncate–删除所有数据,保留表结构,不能撤销还原2、delete–是逐行删除速度极慢,不适合大量数据删除3、drop–删除表,数据和表结构一起删除4、重新执行create表语句5、导出表结构,再次执行一遍,清空所有表(与4一致)二、清空表数据语法truncate table 表名;(仅保留表结构,速度很快)delete from 表名;delete from 表名 where原创 2022-01-20 21:59:46 · 10046 阅读 · 1 评论 -
详谈MySQL优化器如何使用索引快速统计(count函数)
项目中,遇到一个统计需求,从某张表中按照条件分别统计,使用count(distinct case when)解决此问题。count()函数数据统计中,count出现最频繁最简单的用法select count(*) from table where ....select count(distinct column_name) from table where ...count(1)、count(*)、count(字段),它们有什么区别呢?查看表所有索引SQL语句SHOW IN原创 2022-01-15 07:36:17 · 2144 阅读 · 0 评论 -
MySQL联表查询大坑,并发导致系统瘫痪
性能测试,业务表垂直拆分之后,主表关联子表的SQL查询,导致系统瘫痪,原有查询全部超时,连接池撑爆!起初功能测试时数据不是很多,在脚本生成大量数据后,没有及时根据关联字段建索引!在并发查询时,笛卡尔积数据数据获取与筛选,查询速度极慢且无法及时返回数据,其他接口全部得不到响应!定位问题在现象和日志的辅助下,现场及问题分析如下:主表数据数量7万,子表数量23万,联表查询笛卡尔积数据量较大,MySQL持续返回数据并筛选,耗时,连接池打满,且没法短时间内释放,且无其他索引。问题解决方案一:原创 2022-01-13 22:17:19 · 1827 阅读 · 3 评论 -
SELECT t1.*,t2.* from table1 t1, table2 t2 多列or匹配模糊查询按匹配字段排序
SELECT t1.*,t2.* from table1 t1, table2 t2《===》SELECT * FROM table1 t1CROSS JOIN table2 t2以两张表的数据为基准,返回笛卡尔积!每行字段为两张表的字段数和FROM T1,T2是ANSI SQL-89的旧语法,用逗号分隔FROM子句出现的表名,没有JOIN关键字,也没有ON子句,它只支持交叉联接和内联接,不支持外联接;如果没有指定联接条件就是一个交叉联接。新的ANSI SQL-92去掉了逗号,引入了JOIN.原创 2022-01-10 08:23:52 · 4766 阅读 · 0 评论 -
按同一字段排序,left join 之后顺序与原表直接排序不一致,left join与distinct处理数据重复(统计场景) distinct排序时会对id优化,导致顺序不一致
MySQL左连接查询,排序会有问题!注意使用distinct,否则会有多条数据(被连接表on条件满足时存在多条数据)原创 2022-01-06 23:03:05 · 3780 阅读 · 0 评论 -
MySQL优化之limit 1
在很多场景处理数据时需要判断该数据是否有被关联,是否存在,再以此作为更新、删除等操作的依据,使用count(1) 或者count(*)会进行相关数据全部扫描,但实际情况下只需要有一个数据返回即可。简易版:SELECT count(1) from table where column = '**' limit 1优化版:SELECT count(1) from (SELECT * from table where column = '**' limit 1) temp如...原创 2022-01-05 21:19:44 · 2212 阅读 · 1 评论 -
MySQL统计排序,同分数同排名
在一些应用场景中,我们经常会遇到一些排名的问题,比如按成绩、年级、热度排名。排名也有多种排名方式,如直接排名、分组排名,排名有间隔(同维度同排名,排名不连续)或排名无间隔等等。创建测试表CREATE TABLE t_scores (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',`stu_number` INT ( 11 ) NOT NULL COMMENT '学号',`score` INT ( 11 ) NOT NU...原创 2021-12-19 13:13:22 · 4735 阅读 · 3 评论 -
MySQL必知必会的知识点
一、基础主键的值不允许修改,也不允许复用(不能将已经删除的主键值赋给新数据行的主键)。SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。跟随系统文件特性!!!SQL 支持以下三种注释:# 注释SELECT * FROM mytable; -- 注释/* 注释1 注释2 */数据库创建与使用:CREATE DATABASE test;USE test;二、创建表CREATE TABLE mytable ( #原创 2021-11-28 16:15:33 · 632 阅读 · 0 评论 -
MySQL常用的数据类型(数值、字符串、日期)
数据类型整型TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好。INT(11) 中的数字只是规定了交互工具显示字符的个数,对于存储和计算来说是没有意义的。浮点数FLOAT 和 DOUBLE 为浮点类型,DECIMAL 为高精度小数类型。CPU 原生支持浮点运算,但是不支持 DECIMAl 类型的计算,因此 DECIMAL 的计算比浮点类型需要更高的代价。FLO..原创 2021-11-28 16:00:12 · 298 阅读 · 0 评论 -
MyBatis编写模糊查询时使用concat函数时需注意单个字符为‘%‘和‘_‘的模糊搜索情况,MySQL函数instr()
MyBatis编写模糊查询时使用concat函数时需注意单个字符为'%'和'_'的模糊搜索情况,MySQL函数值instr()concat函数模糊查询时需要注意单个字符为'%'和'_'的情况,否则会全匹配,控制层参数需要进行相关拦截!模糊查询示例xml语句https://blog.csdn.net/Be_insighted/article/details/120272866?ops_request_misc=%257B%2522request%255Fid%2522%253A%252216.原创 2021-11-24 22:13:42 · 1477 阅读 · 0 评论 -
MySQL高级优化之为什么索引失效
常见索引失效场景明明是同一条sql,只有入参不同而已。有的时候走的索引index_a,有的时候却走的索引index_b?没错,有时候mysql会选错索引。必要时可以使用force index来强制查询sql走某个索引。类型转换、计算、or 、and前后字段索引问题 没有使用条件查询...原创 2021-11-19 19:15:16 · 646 阅读 · 0 评论 -
Spring项目长事务对并发的影响和事务相关的SQL
Spring项目长事务对并发的影响和事务相关的SQL何为长事务? 在项目中某个方法,长时间未提交的事务就可以称为长事务。《=== 操作的数据太多,业务涉及的表比较多,同时存在增删改查,其他操作过多(非DB操作)数据操作得很多,比如在一个事务里面插入了很多数据,那么这个事务执行时间自然就会变得很长。锁的竞争大,当所有的连接都同时对同一个数据进行操作,那么就会出现排队等待,事务时间自然就会变长。事务中有其他非DB操作,比如一些RPC请...原创 2021-10-30 11:05:23 · 2303 阅读 · 1 评论 -
MyBatis的mapper中一个字段代表多列进行模糊匹配时,and和or都存在时需要将or的范围括起来作为and后面的参数,select其他表信息作为关联数据结果展示
MyBatis的mapper中一个字段代表多列进行模糊匹配时,and和or都存在时需要将or的范围括起来作为and后面的参数SQL应在连接MySQL的工具中进行摸底,各种条件匹配情况下测试,看数据是否能够对得上! <!-- 注意and后面的条件,需要()括起来 因为它们整体作为一个搜索条件 --> AND (INSTR(os.name,#{req.keyword}) OR INSTR(os.identifier,#{re...原创 2021-10-29 08:25:29 · 781 阅读 · 0 评论 -
性能测试删除数据超时,接口大量返回失败,数据库连接池配置参数过小
性能测试删除数据超时,接口错误率较高在进行性能测试时,发现一个复杂的接口中删除数据超时失败!2021-10-28 20:16:07.228 [http-nio-10001-exec-167] ERROR com.iot.handler.IotGlobalExceptionHandler - =====>系统运行出现异常! msg: Could not open JDBC Connection for transaction; nested exception is com.alibaba.dr原创 2021-10-29 08:26:12 · 997 阅读 · 0 评论 -
MySQL并发insert因唯一键导致的DeadLock
业务场景为:一个业务中向A表插入数据多条,同时向B表插入多条纪录,两张表都有组合唯一键,使用jmeter进行并发测试时出现死锁现象! <====一个业务同时向两张表中插入数据,同样的组合唯一索引,插入数据时锁表,并发时必死锁!数据库和后台服务部署在同一机器上,单一线程操作的时候,同样的请求数据,A、B插入纪录的时间分别为5、4毫秒,几乎一样的时间消耗! AB表的唯一键是组合唯一键,插入数据时最前面的字段值一模一样,修改表结构后(去掉B表的唯一键限制...原创 2021-10-27 08:13:06 · 1240 阅读 · 0 评论 -
MySQL高级之基准测试
MySQL基准测试什么是基准测试?定义∶基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响。压力测试需要针对不同主题,所使用的数据和查询也是真实用到的基准测试可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没关系基准测试的目的建立MySQL服务器的性能基准线确定当前MySQL服务器运行情况 模拟比当前系统更高的负载,以找出系统的扩展瓶颈增加数据库并发,观察...原创 2021-10-27 08:37:34 · 377 阅读 · 0 评论 -
MySQL高级之密码过期及历史重用次数
1.查询create user 语法mysql> \h create user;新增password_option选项password_option: { PASSWORD EXPIRE #设置密码过期,用户在下次登录时密码设置一个新的密码 | PASSWORD EXPIRE DEFAULT #设置账号使用全局配置的过期策略 default_password_lifetime | PASSWORD EXPIRE NEVER #密码永不过期 .原创 2021-10-26 07:46:27 · 1531 阅读 · 1 评论 -
MySQL高级之备份与恢复
在之前的工作中是如何对数据库进行备份的?如何对MYSQL进行增量备份和恢复?如何对binlog进行备份?备份方式mysqldumpmysqldump的优点备份结果为可读的SQL文件,可用于跨版本跨平台恢复数据。 备份文件的尺寸小于物理备份,便于长时间存储。 MySQL发行版自带工具,无需安装第三方软件。mysqldump的缺点只能单线程执行备份恢复任务,备份恢复速度较慢。 为完成一致性备份需要对备份表加锁,容易造成阻塞。 会对Innodb Buffer P...原创 2021-10-26 07:31:35 · 232 阅读 · 0 评论 -
MySQL高级之SQL调优
如何优化SQL呢?SQL优化的一般步骤是什么,怎么看执行计划(explain),如何理解其中各个字段的含义?慢查询日志,EXPLAIN 分析查询,profiling分析以及show命令查询系统状态及系统变量如何能够使用组合索引的SQL?慢SQL,如何优化,从哪些方面入手?最左前缀原则是什么?影响mysql的性能因素业务需求对MySQL的影响(合适合度) 存储定位对MySQL的影响 系统各种配置及规则数据 活跃用户的基本信息数据 活跃用户的个性化定制信息...原创 2021-10-23 16:58:29 · 793 阅读 · 0 评论 -
MySQL高级之锁模块与事务并发访问产生的问题以及事务隔离机制
MySQL高级之锁模块与事务并发访问产生的问题以及事务隔离机制事务并发引起的问题与避免1、更新丢失——mysql所有事务隔离级别在数据库层面上均可避免取款事务失败,将记录回滚至100,存款事务更新丢失!2、脏读———READ-COMMITTED事务隔离级别以上可避免 <===> RC隔离级别以上READ_UNCOMMIT:并发时,A事务读到了B事务未提交的数据,B回滚,A读到的数据无效!若A对数据进行update操作,这时候的数据是多么的浮夸...A 1000-1..原创 2021-10-22 23:02:16 · 170 阅读 · 0 评论