
数据库
jacljh
程序匠人
展开
-
ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired
一、故障描述:早晨接到个开发人员的问题,truncat table T_USER_LABEL表时,报错: ORA-00054:resource busy and acquire with NOWAIT specified or timeout expired,如下图。按照字面意思,是资源忙,被占用了。处理思路:查到谁在占用资源,并且杀掉占用该资源的会话就可以了。有可能产生的原因有:1.创建索引时会产生的锁 2.dml 语句会产生的锁 3.索引创建时加上关键字 online时产生的锁。解决处理方法:...转载 2020-10-10 21:46:36 · 785 阅读 · 1 评论 -
oracle取得数据的长度字节数
取得字节数select lengthb(column_name) from table_name取得字符个数select length(column_name) from table_name原创 2020-10-10 21:40:35 · 1391 阅读 · 0 评论 -
表索引的操作
PRIMARY, INDEX, UNIQUE 这3种是一类PRIMARY 主键。 就是 唯一 且 不能为空。INDEX 索引,普通的UNIQUE 唯一索引。 不允许有重复。FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。2看一个表所有索引showindexfromtableName;· Table 表的名称。· Non_unique 如果索引不能包括重复词,则为0。如果可以,则为1。· K...转载 2020-09-26 10:00:10 · 528 阅读 · 0 评论 -
关系数据库设计
转载:https://blog.youkuaiyun.com/horses/article/details/108111344转载 2020-08-31 21:49:36 · 233 阅读 · 0 评论 -
DBeaver - 一款免费开源的通用数据库工具
DBeaver 是一个基于 Java 开发,免费开源的通用数据库管理和开发工具,使用非常友好的 ASL 协议。可以通过官方网站或者 Github 进行下载。由于 DBeaver 基于 Java 开发,可以运行在各种操作系统上,包括:Windows、Linux、macOS 等。DBeaver 采用 Eclipse 框架开发,支持插件扩展,并且提供了许多数据库管理工具:ER 图、数据导入/导出、数据库比较、模拟数据生成等。DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:转载 2020-06-17 21:54:01 · 918 阅读 · 0 评论 -
MySQL 存储过程简单使用
下面是存储过程的例子,删除给定球员参加的所有比赛:mysql> delimiter $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义) mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER) -> BEGIN -> DELETE FROM MATCHES -> WHERE playerno = p_playerno; -> END$$ Query OK, 0 rows affect原创 2020-06-15 15:25:23 · 289 阅读 · 0 评论 -
mybatis多条件批量查询,插入
1、多条件批量查询mapper:List<MsAllocEntity> selectBatch(@Param(value = "reqList") List<ReqDTO> reqList);xml:<select id="selectBatch" resultMap="baseEntityMap"> select ...原创 2020-04-18 14:46:46 · 5938 阅读 · 1 评论 -
MySQL中日期与字符串相互转换
1、日期无需转换查询(日期在数据库中的类型为字符串)select * from day where dateTime > '2016-03-15'2、使用date_formatselect * from day where date_format(dateTime,'%Y-%m-%d') > '2016-03-15'3、日期转换还可以使用str_to_date()s...原创 2020-03-26 01:09:37 · 1718 阅读 · 0 评论 -
oracle查询表在哪个用户下
select owner from dba_tables where table_name='表名';(select owner from dba_tables where table_name='MSTB_SUPPLIER_DELIVERY';)原创 2020-03-26 00:59:20 · 3027 阅读 · 0 评论 -
拆分数据库
1、为什么要拆分数据库? 单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例基本就够用了。请求变多时,第一个办法就是把MySQL替换成Oracle。但是请求量继续增大,单节点的Oracle数据库也不好用了,于是需要考虑告别单节点数据库,开始拆分数据库。从一个节点,变成多个节点。 2、什...原创 2020-01-02 10:55:25 · 382 阅读 · 0 评论 -
mysql如何查看表的索引以及如何删除表的索引
mysql中如何查看和删除唯一索引。查看唯一索引:show index from mytable;//mytable 是表名查询结果如下:查询到唯一索引后,如何删除唯一索引呢,使用如下命令:alter table mytable drop index mdl_tag_use_ix;//mdl_tag_use_ix是上表查出的索引名,key_name...原创 2019-12-26 14:18:35 · 233 阅读 · 0 评论 -
Mysql | 查看表的索引
查看表的索引:show index from table_name(表名)1结果列表中各字段的含义:· Non_unique如果索引不能包括重复词,则为0。如果可以,则为1。· Key_name索引的名称。· Seq_in_index索引中的列序列号,从1开始。· Column_name列名称。· Collation列以什么方式存储在索引中。在MyS...转载 2019-12-26 14:03:03 · 234 阅读 · 0 评论 -
mysql组合索引与字段顺序
下列转自:http://www.tech-q.cn/archiver/tid-11673.html很多时候,我们在mysql中创建了索引,但是某些查询还是很慢,根本就没有使用到索引!一般来说,可能是某些字段没有创建索引,或者是组合索引中字段的顺序与查询语句中字段的顺序不符。看下面的例子:假设有一张订单表(orders),包含order_id和product_id二个字段。一共有31条数...转载 2019-07-07 16:46:18 · 442 阅读 · 1 评论 -
【MySQL】页面上查询时间与数据库中时间相差13个小时
今天使用mysql的时候,突然发现一个很神奇的问题,本来一般都是时间相差8小时嘛,(时区问题),但是发现数据库与本地的时间相差13个小时。一开始没有特别注意,以为是8小时,后面发现本地环境怎么配,都没有用,自己仔细看之后发现是13小时。原因:使用的是阿里的云服务器,使用rpm新装的mysql。通过:下面的命令可以显示结果法一:明确指定 MySQL 数据库的时区,不使用引...转载 2019-06-04 22:44:58 · 1776 阅读 · 0 评论 -
可扩展性设计(二)
1.1 如何扩展数据库前面我们讲到了数据库扩展的一个大致流程,下面我们详细讲解每种扩展方案。1.1.1 X轴扩展—主从复制集群假设我们的service访问数据库的吞吐量在4500TPS,其中写为500TPS,这种典型的读多写少的场景,我们通常会采用读写分离,如图5-1所示,将所有的读请求分发到Slave上,Master只负责写,Master和Slave之间通过数据库自带同步机制复制数据...原创 2019-06-18 23:46:53 · 2482 阅读 · 0 评论 -
可扩展性设计(一)相关概念
我们也可以把加机器得到的性能提升叫做横向扩展。横向扩展(scale out)也叫水平扩展,指用更多的节点支撑更大量的请求。例如1台机器支撑10000TPS,两台机器是否能支撑20000TPS?纵向扩展(scale up)也叫垂直扩展,扩展一个点的能力支撑更大的请求。通常通过提升硬件实现,例如把磁盘升级为SSD。横向扩展通常是为了提升吞吐量,响应时间一般要求不受吞吐量影响即可。因为本身在...原创 2019-06-18 21:46:12 · 5396 阅读 · 0 评论 -
SpringBoot+MyBatis+MySQL读写分离
1. 引言读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP然...转载 2019-06-02 12:07:44 · 142 阅读 · 0 评论 -
【mysql】Date和String的互相转换(DATE_FORMAT & STR_TO_DATE)
SQL:String转date+30分钟DATE_ADD(STR_TO_DATE(a.start_time,'%H:%i'),INTERVAL 30 MINUTE)1.Date ——> String 使用的函数:DATE_FORMAT(date,format) date:需要转换的日期 format:格式化的样式 format样式整理:...转载 2019-04-22 23:18:03 · 1092 阅读 · 0 评论 -
Spring中使用RedisTemplate操作Redis(spring-data-redis)
Jedis和RedisTemplate区别 Jedis是Redis官方推荐的面向Java的操作Redis的客户端,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring框架进行搭配使用如:Spring...原创 2019-04-11 00:38:01 · 890 阅读 · 0 评论 -
MySQL插入数据 报错Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”问题
有时候我们在往数据库中输入信息时,如果输入的内容是中文,会报错“Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”。例如:CREATE TABLE test(ID INT PRIMARY KEY AUTO_INCREMENT,test_name VARCHAR(20) ,test_num INT); ...转载 2019-03-30 14:23:14 · 3465 阅读 · 0 评论 -
redis 数据类型详解 以及 redis适用场景场合
1. MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。 2.Memcach...转载 2019-03-12 23:16:42 · 170 阅读 · 0 评论 -
Redis常用数据类型
Redis中文网:http://www.redis.net.cn/Redis中文官网:http://www.redis.cn/Redis最为常用的数据类型主要有以下五种:String Hash List Set Sorted set在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的: 首先Redis内...转载 2019-03-12 23:08:00 · 165 阅读 · 0 评论 -
Mybatis批量插入总结
<一>mybatis中,批量保存的两种方式 1.使用mybatis foreach标签 2.mybatis ExecutorType.BATCH一:使用mybatis foreach标签具体用法如下: <!--批量保存(foreach插入多条数据两种方法) int addEmpsBatch(@Param...原创 2019-03-17 16:50:23 · 354 阅读 · 0 评论 -
Redis 序列化方式StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer
当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。Spring Data JPA为我们提供了下面的Serializ...转载 2019-03-20 20:59:31 · 420 阅读 · 0 评论 -
he server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone。。。
今天又遇到了这个错误,每次都要去寻找错误原因非常得浪费时间,所以决定以后遇到了问题之后都到这里来记录一下错误。 java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configu...转载 2019-03-01 22:29:16 · 365 阅读 · 0 评论 -
连接数据库报错:1251-Client does not support authentication protocol requested by server
问题:使用Navicat连接MySQL的时候,出现了一个问题:1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client原因:经查,出现这种情况的原因是:MySQL8 之前的版本中加密规则是mysql_native_password...转载 2019-02-27 23:53:17 · 871 阅读 · 0 评论 -
数据库组合索引
2018、03、12面试中的问题组合索引是什么?组合索引建立的原则。b树和b+树的区别。一次查询只能用到一个索引,所以 首先枪毙 a,b各建索引方案a还是b? 谁的区分度更高(同值的最少),建谁!当然,联合索引也是个不错的方案,ab,还是ba,则同上,区分度高者,在前索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始...转载 2019-07-07 17:23:41 · 1882 阅读 · 0 评论 -
MyBatis(四) 主键生成策略
1、数据库支持自动生成主键 若数据库支持自动生成主键的字段(比如 MySQL和 SQL Server),则可以设置useGeneratedKeys=”true”,然后再把keyProperty 设置到目标属性上。mysql 支持自增主键,自增主键值的获取,mybatis 也是利用 statement.getGenreatadKeys();useGeneratedKeys=”true”:使...转载 2019-07-07 17:32:33 · 1733 阅读 · 0 评论 -
MyBatis如何防止SQL注入
SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者)。[摘自]SQL injection - WikipediaSQL注入,大家都不陌生,是一种常见的攻击方式。攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如“or ‘1’=’1’”这样的语句),有可能入侵参数检验不足的应用程序。所以,在我们的...转载 2019-07-07 18:09:35 · 375 阅读 · 0 评论 -
深入浅出乐观锁与悲观锁
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让...转载 2018-11-05 21:42:42 · 193 阅读 · 0 评论 -
JDBC出现The server time zone value 'Öйú±ê׼ʱ¼ä' is unrec问题
JDBC出现The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrec问题后来查阅资料发现这都是因为安装mysql的时候时区设置的不正确 mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用+8:00格式使用的数据库是MySQL,从上面图看出SpringBoot2.1在你没有指定MySQL驱动版本的情况下它自动依赖的驱动是8.0.12...转载 2019-09-09 14:33:42 · 6877 阅读 · 1 评论 -
Excle快速生成Sql语句
我们想把excle中数据添加到数据库中,但由于excle中数据太多这个时候我们应该怎么办。这里用的是mysql数据库为例1、例如我想把图1的数据给添加到图2的数据库中;2、先写个sql语句确认一条数据能插入成功。3、然后复制这条sql语句打开excle,选中表格后的一个单元格,在上方函数位置粘贴刚才的sql语句并做修改:="INSERT INTO student(i...原创 2019-08-13 10:31:46 · 484 阅读 · 0 评论 -
Java中高级面试题(5)
什么是线程死锁?死锁如何产生?如何避免线程死锁?死锁的介绍:线程死锁是指由于两个或者多个线程互相持有对方所需要的资源,导致这些线程处于等待状态,无法前往执行。当线程进入对象的synchronized代码块时,便占有了资源,直到它退出该代码块或者调用wait方法,才释放资源,在此期间,其他线程将不能进入该代码块。当线程互相持有对方所需要的资源时,会互相等待对方释放资源,如果线程都...转载 2019-07-31 23:15:08 · 166 阅读 · 0 评论 -
Java学习 —— 并发编程网
并发编程网:http://ifeve.com/原创 2019-07-26 00:04:00 · 209 阅读 · 0 评论 -
Java中级面试题及答案解析(8)
数据库的三大范式1 、第一范式(1NF)在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构...转载 2019-08-02 23:33:51 · 204 阅读 · 0 评论 -
Java面试题-数据库篇十二
作为一枚Java后端开发者,数据库知识必不可少,对数据库的掌握熟悉度的考察也是对这个人是否有扎实基本功的考察。特别对于初级开发者,面试可能不会去问框架相关知识,但是绝对不会不去考察数据库知识,这里收集一些常见类型的SQL语句,无论对于平常开发还是准备面试,都会有助益。基本表结构:student(sno,sname,sage,ssex)学生表course(c...转载 2019-07-24 23:26:36 · 154 阅读 · 0 评论 -
Java面试题-数据库篇十一
重点:适当引入中间表作为一枚Java后端开发者,数据库知识必不可少,对数据库的掌握熟悉度的考察也是对这个人是否有扎实基本功的考察。特别对于初级开发者,面试可能不会去问框架相关知识,但是绝对不会不去考察数据库知识,这里收集一些常见类型的SQL语句,无论对于平常开发还是准备面试,都会有助益。基本表结构:student(sno,sname,sage,ssex)学生表...转载 2019-07-24 23:24:46 · 148 阅读 · 0 评论 -
死锁
死锁是两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候。例如,如果线程1锁住了A,然后尝试对B进行加锁,同时线程2已经锁住了B,接着尝试对A进行加锁,这时死锁就发生了。线程1永远得不到B,线程2也永远得不到A,并且它们永远也不会知道发生了这样的事情。为了得到彼此的对象(A和B),它们将永远阻塞下去。这种情况就是一个死锁。...转载 2019-08-04 10:13:45 · 170 阅读 · 0 评论 -
千万条记录分页查询优化
优化方法一分页查询是最常用的场景之一,但通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。SELECT * FROM tstb_logWHERE type = 'SQLStats' AND name = 'SlowLog' O...原创 2019-07-06 18:47:59 · 1362 阅读 · 0 评论 -
sql语句查询表字段对应类型,注释,查询数据库所有表名和表注释
desc MSTB_KEY ; (MSTB_KEY为数据库表名) —— mysql与oracle数据库通用mysql数据库查询字段名,注释,字段类型select column_name,column_comment,data_type from information_schema.columns where table_name='TSTB_ALLOCATION_CLAW_BA...原创 2019-07-04 21:41:13 · 2852 阅读 · 0 评论