
数据库
张某某啊哈
做一个有梦想的程序猿
展开
-
MySQL分页查询慢的原因及解决方案
我们在开发的过程中使用分页是不可避免的,通常情况下我们的做法是使用 limit 加偏移量:select * from table where column=xxx order by xxx limit 1,20。但是,当数据量大的时候(小编遇到的情况是 500 万数据),如果翻到最后几页,即使加了索引,查询也是非常慢的,这是什么原因导致的呢?但是我们查看前几页的时候,速度并不慢。解决的方法就是尽量使用索引覆盖扫描,就是我们 select 后面检出的是索引列,而不是所有的列,而且这个索引的列最好是 id。原创 2024-12-17 10:48:55 · 539 阅读 · 0 评论 -
oracle如何查询死锁
3)如果还不能解决:2)kill掉这个死锁的进程:alter system kill session ‘sid,serial#’;Username:死锁语句所用的数据库用户;如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。2)用dba用户执行以下语句,可以查看到被死锁的语句。Lockwait:死锁的状态,如果有内容表示被死锁。Program: 产生死锁的语句主要来自哪个应用程序。Status: 状态,active表示被死锁。Machine: 死锁语句所在的机器。1)用dba用户执行以下语句。原创 2024-12-17 10:10:54 · 1830 阅读 · 0 评论 -
explain查看sql执行计划
如果此列是NULL,则没有相关的索引。关键字,就能够看到它的执行计划,通过执行计划,我们可以清楚的看到表和索引执行的情况,索引有没有执行、索引执行顺序和索引的类型等。这里建立的是code和name的联合索引,顺序是code在前,name在后,这里直接按name降序,跟之前联合索引的顺序不一样。该字段包含有关MySQL如何解析查询的其他信息,这列还是挺重要的,但是里面包含的值太多,就不一一介绍了,只列举几个常见的。我们看到表t1命中的索引是const(常量),而t2命中的索引是列sue库的t1表的id字段。转载 2024-12-17 10:07:54 · 581 阅读 · 0 评论 -
Spring事务@Transactional常见的8种失效场景(通俗易懂)
在Spring的Aop代理下,只有目标方法在外部进行调用,目标方法才会由Spring生成的代理对象来进行管理,如果是其他不包含@Transactional注解的方法中调用包含@Transactional注解的方法时候,有@Transactional注解的方法的事务会被忽略,则不会发生回滚。这是因为@Async注解使用的是独立线程和独立的事务,和notice的不处于同一个事务当中,所以notice回滚了,但是history入库了。虽然程序当中抛出了异常,但是数据库还是成功入库了,这样显然是不合理的!转载 2024-12-17 09:58:31 · 603 阅读 · 0 评论 -
Spring boot 线程池使用——事务处理机制
所以,在spring boot线程池使用时,给@Async方法加@transactional是一种比较方便的处理方式。除此之外,将事务主体作为单独对象调用,也可以保证事务生效。异步方法在没有事务注解的情况下,去调用通过@Autowired注入的有事务注解的其他对象方法时,事务是生效的(即表格第三列倒数第二行结论)。图中表示的是用@Async注解修饰的异步方法,在各种场景下的事务表现。其背后的原理是,AOP的动态代理生成的代理对象和当前对象的区别。异步任务中,事务也是很关键的一部分。原创 2024-12-17 09:42:43 · 220 阅读 · 0 评论 -
Mysql出现死锁原因
1)在采用INNODB的MySQL中,更新操作默认会加行级锁,行级锁是基于索引的,在分析死锁之前需要查询一下mysql的执行计划,看看是否用到了索引,用到了哪个索引,对于没有用索引的操作会采用表级锁。在并发度高的应用中,批量更新一定要带上记录的主键,优先获取主键上的锁,这样可以减少死锁的发生。2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。比如A向B转账,不可能A扣了钱,B却没收到。1.生产环境出现以下报错。原创 2024-12-16 16:14:13 · 673 阅读 · 0 评论 -
问题排查 - MYSQL 事务死锁问题
先 SELECT id WHERE … LIKE … LIMIT N,然后再使用 DELETE / UPDATE … IN (ids) 去做。原创 2024-12-16 16:06:41 · 1058 阅读 · 0 评论 -
Mysql int(11)和Oracles nubmer(11) 的区别
Mysql int(11)和Oracles nubmer(11) 的区别原创 2022-12-08 15:17:41 · 1693 阅读 · 1 评论 -
Invalid bound statement (not found) 解决办法汇总
Invalid bound statement (not found) 解决办法汇总转载 2022-11-30 10:18:15 · 3271 阅读 · 0 评论 -
java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String
java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String 问题解决转载 2022-11-03 15:44:45 · 835 阅读 · 1 评论 -
Dbeaver导出异常:Utility ‘mysqldump.exe‘ not found in client home
Dbeaver导出异常:Utility 'mysqldump.exe' not found in client home原创 2022-10-11 10:10:07 · 2664 阅读 · 0 评论 -
Oracle中case用法总结
--case语句的种类:1.简单case语句语法: case exp when comexp then returnvalue ... when comexp then returnvalue else returnvalue end case到end之间相当于一个具体的值,可以做运算,取...原创 2022-09-23 09:29:23 · 2767 阅读 · 0 评论 -
oracle数据库复制表
--删除表格drop table l_jh_fahuoshenqingbackups--创建表格CREATE TABLE l_jh_fahuoshenqingbackups as SELECT * FROM l_jh_fahuoshenqing;原创 2021-04-09 14:24:25 · 128 阅读 · 0 评论 -
Oracle 数据库视图与基表的关系
一:首先解释什么是视图: 视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据。视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表,与真实表不同,视图不会要求分配存储空间,视图中也不会包含实际的数据。视图只是定义了一个查询,视图中的数据是从基表中获取,这些数据在视图被引用时动态的生成。由于视图基于数据库中的其他对象,因此一个视图只需要占用数据字典中保存其定义的空间,而无需额外的存储空间,并且基表的变化会导致视图相应的改变。二:视图的创建:.原创 2021-04-08 19:07:25 · 1059 阅读 · 0 评论 -
oracle 查看视图
1、通过pl/sql,登录oracle数据库,2、敲百入sql,度可以查询本库的所有知视道图view,select * from all_views t,结果中owner代表不同的用户;回3、如果答查看本用户的所有视图view,执行sql,select * from user_views t,可以看到本用户并没有创建过视图,4、如果要看本库,每个用户分别有多少视图view,执行sql,select owner, count(*) from all_views t group by o原创 2021-04-08 19:06:38 · 14160 阅读 · 0 评论 -
ORACLE日常-oracle中给date型字段insert into值
如果是mysql数据库,那么直接将now()值插入数据库即可,如果testDate表的datevalue字段的数据类型是date,则如下:insert into testDate(dateValue) values(now());但是oracle中直接这样,是会报错的,那么我们用如下方法,我这里总结下:/*如果datecal是date型字段*/insert into tabname(datecol) value(sysdate) ; -- 用date值insert i..原创 2021-04-08 18:59:09 · 1802 阅读 · 0 评论 -
oracle 在sql中拼接时间
<isNotEmpty prepend="and" property="startDate"> to_date(rs.count_date, 'YYYY-MM-DD hh24:mi:ss') >= TO_DATE(#startDate#||' 00:00:00', 'YYYY-MM-DD hh24:mi:ss') </isNotEmpty> <isNotEmpty prepend..原创 2021-04-08 18:57:33 · 566 阅读 · 0 评论 -
Oracle建立表空间和用户
Oracle建立表空间和用户建立表空间和用户的步骤:用户建立:create user 用户名 identified by "密码";授权:grant create session to 用户名; grant create table to 用户名; grant create tablespace to 用户名; grant create view to 用户名;表空间...原创 2021-04-02 16:20:20 · 122 阅读 · 0 评论 -
oracle数据库分页查询
ROWNUM是伪列,只能<=,不能>=所以需要给ROWNUM起个别名,变成逻辑列后来比较select *from (select rownum as num,a.* from (select * from test order by 1 asc) a) twhere t.num>=20and t.num<=40;你写的可以修改为:select *from (select ROWNUM as num,A.* from (select * from tes.原创 2021-04-02 16:16:51 · 83 阅读 · 0 评论 -
oracle 新建数据库,及创建用户,表空间,sqlplus导入导出数据库
My points:(1)我的头头说一般不需要创建数据库,在Orcl数据库中创建用户,创建用户对应的表就成了;(2)删除数据库和创建数据库启动的软件是一个。一、新建实例1、安装好ORACLE服务端。2、ORACLE创建实例,使用ORAHOME目录下的"Configuration and Migration Tools"下的"Database Configuration Assistant"工具。3、步骤2:选择"创建数据库"。4、步骤3:选择数据库模板。5、步骤4:选择"专用服务器模式原创 2021-04-02 16:15:22 · 954 阅读 · 0 评论 -
oracle创建表空间出错的原因和解决办法
相信很多人在创建表空间的时候遇到过这样问题.问题原因:这是因为oracle数据库是在虚拟机或者是服务器上安装的.你在本地创建文件的时候自然会找不到文件夹.就会造成图上的错误解决办法:1.打开虚拟机2.连接上oracle数据库3.找到安装oracle文件夹的位置例如:D:\oracle11g\app\oracle\oradata\4.在cmd上敲命令:create tablespace tudoudatafile ‘D:\oracle11g\app\oracle\orad...原创 2021-04-02 15:57:44 · 3577 阅读 · 0 评论 -
MySQL查询以及修改表、表字段备注信息
在开发中,我们可能经常碰到这种问题,随着需求的变更,或者设计阶段的失误,表字段的长度太小,字段的备注信息需要完善。所以,就要更改表结构或者其它一些信息了。话不多说,步入正题。创建测试表:create table student( id int(11) primary key, name varchar(50) comment '姓名', age int(4) comment '年龄', address varchar(50) comment '住址');...原创 2021-03-29 16:25:49 · 633 阅读 · 0 评论 -
Oracle视图的创建和使用
视图视图:视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。从数据库系统外部来看,视图就如同一张表一样。视图可以查询,但不可以新增、删除、修改。创建视图create view myview as select empno,ename,job,deptnofrom emp;查看视图select * f..原创 2021-03-28 16:18:18 · 406 阅读 · 0 评论 -
create view 和 create or replace view的区别
create or replace view的意思就是若数据库中已经存在这个名字的视图的话,就替代它,若没有则创建视图;create则不进行判断,若数据库中已经存在的话,则报错,说对象已存在;原创 2021-03-28 16:13:30 · 2358 阅读 · 2 评论 -
oracle出现“无法为表空间 XX 中的段创建 INITIAL 区”错误
这个错误可能出现在create表的时候,也可能出现在insert数据的时候,也可能出现在导入dmp文件的时候,还可能出现在创建索引的时候...等等原因:表空间不足。解决办法:1.设置表空间自动增长(有弊端,一般最大增长会有限制) 2.增加表空间物理文件以表空间TBS_DATA为例方法一:1)查看表空间是否自动扩容:select tablespace_name,file_name,autoextensible from dba_data_files (...原创 2021-03-25 16:47:55 · 6537 阅读 · 0 评论 -
在Navicat for MySQL中查看数据表创建语句
右键数据表,对象信息,选择“DDL”即可。有图有真相原创 2021-03-25 16:45:58 · 758 阅读 · 0 评论 -
Mysql查询为空赋值为0
使用IFNULL函数可以完美解决。 SELECT a.id AS schoolId, a. NAME AS schoolName, a.area_id as areaId, a.school_type AS schoolType, a.school_contact AS schoolContact, a.contact_telphone AS contactTelphone, a.student_number AS studentNumber,.原创 2021-03-25 16:40:57 · 1648 阅读 · 1 评论 -
navicat事务自动提交问题
最近在使用navicat编辑数据库表的时候遇到了一些问题,记录下~~问题:编辑完数据之后点击“✔”提交的时候navicat卡了,然后提示“MySql Lock wait timeout exceeded”,截图现在没有了,总之意思就是超时了。原因:后来查了好多资料,原来是navicat的自动提交事务关闭了,导致了修改数据之后事务一直未提交,所以再修改数据的时候就得等之前的事务,但是事务一直未提交,所以就超时了解决原因:可以先看一下事务是否是自动提交的。show variables like原创 2021-03-24 18:05:03 · 2566 阅读 · 1 评论 -
navicat for mysql 对事务的操作
数据表 student表teacher课程表course成绩表sc首先,开始一个事务。START transaction ;第一个sql语句:二班 转学生 殷离 和 曾啊牛添加学生信息到student表: ‘殷离’,’女’,’18’,’二班’ 和 ‘曾阿牛’,’男’,’10’,’二班’INSERT into student (Sname,Ssex,Sage,Sdept)VALUES ('殷离','女','18','二班');INSERT into s原创 2021-03-24 18:01:28 · 3161 阅读 · 0 评论 -
SQL中MINUS的用法
minus 指令是运用在两个 SQL 语句上。它先找出第一个 SQL 语句所产生的结果,然后看这些结果有没有在第二个 SQL 语句的结果中。如果有的话,那这一笔资料就被去除,而不会在最后的结果中出现。如果第二个 SQL 语句所产生的结果并没有存在于第一个 SQL 语句所产生的结果内,那这笔资料就被抛弃。MINUS 的语法如下:[SQL 语句 1]MINUS[SQL 语句 2]我们继续使用一样的例子:Store_Information 表格store_nameSalesDateLo...原创 2021-03-24 17:24:21 · 8492 阅读 · 0 评论 -
SQL语句更新oracle数据库表中的时间字段
今天在更新oracle数据库表中的时间时,总是出错update T_VE_ENGINEINSTALL_MISSION setDTM_EDIT_TIME='2017-10-01 00:00:00'后来才发现oracle更新时间时有两种方式1.TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS')2. TO_DATE(SYSDATE(),'YY/MM/DD HH24:MI:SS')注: TO_CHAR 把日期或数字转换为字符串 TO_CHAR(number...原创 2020-09-30 16:20:21 · 2419 阅读 · 0 评论 -
Oracle帐户被锁定使用命令行解锁
Oracle帐户在密码被连续输入错误3次的情况下就会锁定,而锁定后必须手动解除,否则这个帐户一直在锁定状态下,不能使用,那么,我们怎么将被锁定的用户解锁呢?下面我们一起来看看。 我们在做Oracle监听程序测试时,发现帐户已经被锁定。 在数据库安装电脑上,运行窗口中输入cmd,调出命令提示符界面。 在命令提示符下面,用管理员身份登入到数据库 sqlplus / as sysdba 输入解锁命令后回车 alter user Scott accoun原创 2020-09-30 16:19:05 · 945 阅读 · 0 评论 -
Oracle数据库账户被锁定解决方案
当用PLSQL登录Oracle时提示ORA-28000: the account is locked;这个提示就是当前用户被锁定;为什么会被锁定呢?用户登录十次没有成功的,当前用户会被锁定; 安装时没有解锁的; 下面我们用两种比较常用的方法解决这个问题; 方法一: 首先我们需要以系统管理员的身份登陆,比如:sys,system; oracle登录身份有三种:normal 普通身份。sysdba 系统管理员身份。sysoper 系统操作员身份每种身份对应不同的权限。原创 2020-09-30 16:17:05 · 6972 阅读 · 0 评论 -
plsql查询数据显示为乱码解决方法
莫上花开plsql查询数据显示为乱码解决方法问题:在plsql中进行表数据查询的时候,发现查询出来的中文居然显示为乱码,通过查找资料解决该问题。1、查看数据的编码(语句:select * from v$nls_parameters)发现显示的语言不是我们常用的GBK模式2、配置本机语言环境变量LANG=zh_CN.GBKNLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK通过以上配置方式将以上两个配置配置入环境变量3、重启p.原创 2020-09-30 16:14:57 · 1753 阅读 · 0 评论 -
oracle数据库sql语句修改表某列字段长度
1.修改一个列alter table 表名 modify name varchar2(60);2.修改多个列alter table 表名 modify (name varchar(60),name1 varchar2(60));原创 2020-09-30 16:13:26 · 5334 阅读 · 0 评论 -
oracle数据库创建、删除索引等操作
1、创建索引create index 索引名 on 表名(列名);2、删除索引drop index 索引名;3、创建组合索引create index 索引名 on 表名(列名1,,列名2);4、查询索引--根据索引名,查询表索引字段select * from user_ind_columns where index_name='索引名';--根据表名,查询一张表的索引select * from user_indexes where table_name='表名';原创 2020-09-30 16:11:53 · 826 阅读 · 0 评论 -
数据库 SQL查询重复记录 方法
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录delete from peoplewhere peopleId i.原创 2020-09-30 16:08:58 · 4818 阅读 · 1 评论 -
Android 入门列子 (二) 配置Android使用的数据源
JDBC Template 是什么https://blog.youkuaiyun.com/qq_36908872/article/details/107710289dbconfigAndRoid.propertiesurl=jdbc:oracle:thin:@127.0.0.1:ORCLCMFusername=xxxxxxpassword=123456dbType=oracleJDBCUtilspackage com.szerp.android.util;impo...原创 2020-07-31 15:57:39 · 445 阅读 · 0 评论 -
oracle 数据库报错 ORA-00937: not a single-group group function
ORA-00937: not a single-group group function有时候查询会遇到如下错误SCOTT@PROD> select deptno,sum(sal) from emp;select deptno,sum(sal) from emp *ERROR at line 1:ORA-00937: not a single-group group function原因:这句话不会运行,因为deptno要求每行都显示,而sum要求统...原创 2020-07-31 10:51:29 · 23503 阅读 · 0 评论 -
oracle数据库 SQL 保留两位小数,四舍五入
一、问题描述数据库里的 float momey 类型,都会精确到多位小数。但有时候 我们不需要那么精确,例如,只精确到两位有效数字。二、解决:1. 使用 Round() 函数,如 Round(@num,2) ,其中参数 2 表示 保留两位有效数字。缺点:Round() 只是负责四舍五入到两位小数,但是不负责截断。printROUND(13.145,2);或者selectROUND(13.145,2);结果为:13.150。2. 使用 Convert(decimal(...原创 2020-07-17 16:21:46 · 9141 阅读 · 0 评论