![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
梦里梦见醒不来丶
未来可期
展开
-
浅析redo log、undolog、binlog
redo log 和 undo logredo log 是重做日志,提供 前滚 操作;undo log 是回退日志,提供 回滚 操作。只用 undo log 实现原子性和持久性的缺陷:事务提交前需要将 Undo Log 写磁盘(提供可回滚功能,保证原子性),这会造成多次磁盘 IO(不考虑各种优化例如 SQL 解析优化等),这些 IO 算是顺序 IO;事务提交后需要将数据立即更新到数据库...转载 2019-09-23 16:38:33 · 337 阅读 · 0 评论 -
redisTemplate使用
Redis 数据结构简介Redis 可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串)、List(列表)、Set(集合)、Hash(散列)和 Zset(有序集合)。下面来对这5种数据结构类型作简单的介绍:结构类型结构存储的值结构的读写能力String可以是字符串、整数或者浮点数对整个字符串或者字符串...原创 2018-07-08 10:02:05 · 482 阅读 · 0 评论 -
mybatis批量插入数据
dao层:void insertUser(@Param("list") List<User> list)xml:<insert id="insertUser" parameterType="java.util.List"> insert into User_Msg( user_id, msg_id, `read`, `ty...原创 2018-07-08 09:52:02 · 421 阅读 · 0 评论 -
Spring多数据源配置和使用
1、配置信息 <!--==============================bpt_mobdb数据库配置============================--> <bean id="bpt_mobdb" class="org.apache.commons.dbcp.BasicDataSource"> <property ...原创 2018-04-13 10:01:41 · 249 阅读 · 0 评论 -
数据库关键字作为字段如何处理
比如:数据库字段有 type和desc两个关键字作为字段在增删该查的时候要用 `` 包起来,Tab键上面那个键如:select `type`,`desc` from table原创 2018-04-10 17:51:45 · 3400 阅读 · 0 评论 -
深入浅出数据库索引原理
前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”。当时我就楞了...转载 2018-02-25 17:21:10 · 181 阅读 · 0 评论 -
Spring 基于注解方式进行事务管理
使用步骤:步骤一、在spring配置文件中引入<tx:>命名空间<beans xmlns=”http://www.springframework.org/schema/beans” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:tx=”http://www.springf...原创 2018-02-25 09:47:44 · 306 阅读 · 0 评论 -
数据库SQL优化总结
一、问题的提出在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单...转载 2018-02-09 09:17:51 · 217 阅读 · 0 评论 -
MongoDB查询条件$lt $lte $gt $gte
$lt $lte $gt $gte以上四个分别表示为:< 、 <= 、 > 、 >= 。 通常的做法是将他们组合起来,以便查找一个范围。 比如,查询年龄在18到25岁(含)的人,我们可以这样db.user.find({"age":{"$gte":18,"$lte":25}}) 这样的范围查询对查询日期特别有用 比如,查询在2015年1月1日后注册的用户start = new Date("01/0原创 2017-12-25 10:45:10 · 20135 阅读 · 0 评论 -
数据库事务隔离级别-- 脏读、幻读、不可重复读
一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。注意:我们讨论隔离级别的场景,主要是在多个事务并发 的情况下,因此,接下来的讲解都围绕事务并发。Read uncommitted 读未提交公司发工转载 2017-11-17 15:15:24 · 470 阅读 · 0 评论 -
SQL 操作结果集 -并集、差集、交集、结果集排序
操作结果集 为了配合测试,特地建了两个表,并且添加了一些测试数据,其中重复记录为东吴的人物。 表:Person_1魏国人物 表:Person_2蜀国人物 A、Union形成并集 Union可以对两个或多个结果集进行连接,形成“并集”。子结果集所有的记录组合在一起形成新的结果集。 1、限定条件 要是用Union来连接结果集,有4个限定条件。原创 2017-10-14 11:19:38 · 342 阅读 · 0 评论 -
Mysql海量数据分页查询优化
查看代码打印1 SELECT * FROM table ORDER BY id LIMIT 1000,10;以上SQL语句在原理上和在实际操作中是不会存在什么问题,但是当table表的数据量达到几十万以上的时候,上面的语句执行一遍,可能会要执行个十几秒的时间,并且当页数越靠后的话,执行的时间会越长,这个时候我们就需要找到一种更快的查询办法来替代这种操作了。网上已经有很多优化的方法,基本都是这样转载 2018-02-07 18:28:49 · 2996 阅读 · 0 评论 -
分表和表分区详解
为什么要分表和分区?日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能会更加糟糕。分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率。什么是分表?分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每原创 2017-06-15 15:34:50 · 820 阅读 · 0 评论 -
mysql必备知识点
标题有点标题党的意思,看了文章之后希望大家不会有这个想法,绝对干货!!!这篇花文章是我花了几天时间对之前总结的MySQL知识点做了完善后的产物,这篇文章可以用来回顾MySQL基础知识以及备战MySQL常见面试问题。文末有公众号二维码,欢迎关注获取笔主最新更新文章,并可免费获取笔主总结的《Java面试突击》以及Java工程师必备学习资源。什么是MySQL?MySQL 是一种关系型数据库,在Ja...转载 2019-07-04 16:12:55 · 266 阅读 · 0 评论 -
spring 事务传播行为实例分析
Spring事务传播行为:spring特有的事务传播行为,spring支持7种事务传播行为,确定客户端和被调用端的事务边界(说得通俗一点就是多个具有事务控制的service的相互调用时所形成的复杂的事务边界控制)下图所示为7钟事务传播机制o 传播行为含义PROPAGATION_REQUIRED(XML文件中为REQUIRED)表示当前方...转载 2019-04-26 11:57:06 · 150 阅读 · 0 评论 -
Communications link failure The last packet successfully received from the server was xxx millise
1、问题原因mysql服务器中断了我们的连接,虽然连接池有连接(连接池认为该连接有效,mysql确认为无效)2、解决办法(我是这么解决的)数据库地址加上autoReconnect=true,开启断开自动连接jdbc_url=jdbc:mysql://xxx.xx.xx.xxx:3306/xxx?autoReconnect=true配置文件配置,testOnBorrow默认为false,我...原创 2019-01-31 10:26:24 · 4161 阅读 · 0 评论 -
mybatis批量更新数据
sql写法:UPDATE user_table SET user_name= CASE id WHEN 1 THEN '张三' WHEN 2 THEN '李四' WHEN 3 THEN '王二' END WHERE id IN (1,2,3)更新多个字段:UPDATE user_...原创 2019-01-29 16:25:04 · 345 阅读 · 0 评论 -
MySQL存储引擎--MyISAM与InnoDB区别
MyISAM 和InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。 以下是一些细节和具体原创 2017-08-21 10:59:56 · 291 阅读 · 0 评论 -
MySQL索引的数据结构及算法原理
前两天经历了武汉一行腾讯面试,数据库索引是一个面试热点,在此搜集相关资料,以备学习之用。下面是一位牛人写得关于数据库索引的精品之作,因为很好,不敢修饰,转载至此与博友共享。原文链接:MySQL索引背后的数据结构及算法原理本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多转载 2017-08-21 17:05:21 · 658 阅读 · 0 评论 -
Oracle索引原理
B-TREE索引(二叉树索引,默认情况下,我们建的索引都是此种类型) 一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。可以用下图一来描述B树索引的结构。其中,B表示分支节点,而L表示叶子节点。 对于分支节点块(包括根节点块)来说,其所包含的索引条目都是按照顺序排列的(缺省是升序排列,也可以在创建索引时指定为降序排列)。每 个索引条目(也可以叫做每条记录)都具有两转载 2017-08-21 16:22:31 · 546 阅读 · 0 评论 -
ORACLE表名与列名小写转成大写
批量将表名变为大写begin for c in (select table_name tn from user_tables where table_name <> upper(table_name)) loop begin execute immediate 'alter table "'||c.tn||'" rename to '||c.tn;原创 2017-08-23 11:20:50 · 1954 阅读 · 0 评论 -
oracle中group by字符拼接
字符拼接用逗号隔开select userid as userId,(LISTAGG(campusname,',') WITHIN group(order by campusname))as campusname from T_SYS_CAMPUS_user group by userid原创 2017-10-27 14:45:50 · 5774 阅读 · 0 评论 -
Oracle trunc()函数的用法
--Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-062.select trunc(sysdate, 'mm') from dual --2013-01-01 返回当月第一天.3.select trunc转载 2017-12-29 10:37:32 · 214 阅读 · 0 评论 -
java.sql.SQLException: 无效的列索引
java.sql.SQLException: 无效的列索引“无效的列索引”其实是个低级的错误,原因无非几个:1、sql串的?号数目和提供的变量数目不一致:例如:jdbcTemplate.update(sql, new Object[] {newState,oldState});如果sql里面有1个?号,Object[]送了2个,就会报错。2、sql串里的?号书写不正确英文?和中文?有时难以区分。3、原创 2017-10-14 11:15:10 · 718 阅读 · 0 评论 -
SQL之case when then用法
case具有两种格式。简单case函数和case搜索函数。--简单case函数case sex when '1' then '男' when '2' then '女’ else '其他' end--case搜索函数case when sex = '1' then '男' when sex = '2' then '女' else '其他' end 这两种方式,可以原创 2017-09-25 10:15:30 · 300 阅读 · 0 评论 -
oracle执行update和insert语句卡住不动
造成这样的情况原因在于你之前执行了update或inert操作但你并没有commit,导致你操作的这条记录被oracle锁住,后面就无法update或insert它了解决办法:1:可能你是在PLSQL中操作的,commit一下 2:查询锁定记录:SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$se原创 2017-04-25 19:46:12 · 11873 阅读 · 1 评论 -
ora-01652:无法通过128(在表空间space中)扩展temp段解决办法
原因:临时表空间不够用了 解决办法: 1.找到提示错误的这张临时表空间select * from dba_temp_files;例如我的就是TS_TEMP出问题了2.把出问题的临时表地址复制下来,设置该临时表自动扩展alter database tempfile '刚刚复制的地址' autoextend on next 5m maxsize unlimited这个时候如果报错了,你可以这样看下你原创 2017-04-19 18:35:34 · 13987 阅读 · 0 评论 -
oracle中建视图额外增加列
例如在视图v_user中额外增加一列type,给其取值1.create or replace view v_useras select *, '1' type from user;原创 2017-04-18 18:20:20 · 8045 阅读 · 2 评论 -
sql中distinct的用法
distinct这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。 下面先来看看例子:table表字段1 字段2 id name 1 a 2原创 2017-03-27 14:14:43 · 783 阅读 · 0 评论 -
oracle之to_char和to_date用法
1.TO_CHAR 是把日期或数字转换为字符串使用TO_CHAR函数处理数字 TO_CHAR(number, '格式') TO_CHAR(salary,’$99,999.99’); 使用TO_CHAR函数处理日期 TO_CHAR(date,’格式’);2.TO_DATE 是把字符串转换为数据库中得日期类型转换函数使用TO_NUMBER函数将字符转换为数字 TO_NUMB原创 2017-04-01 18:29:21 · 550 阅读 · 0 评论 -
oracle存储过程简单示例
存储过程: 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程保存在数据库里面,存储过程可以被连接此数据库的所有程序设计语言和程序使用,存储过程可以有数据库管理软件(如PLSQL)修改,使得多层结构程序调整系统原创 2017-03-21 17:15:36 · 585 阅读 · 0 评论 -
Oracle视图和触发器简单示例
存储过程,触发器,视图在开发中都是比较常见的,存储过程的基本已经简单的介绍了,这里就不在废话了视图:简单来说就是一张虚拟表,里面存放了从一张表或多张表中获取的我们想要的数据,视图存在于数据库中,不占物理内存,这个是相对的,因为视图本身的定义语句还是要存储在数据字典中的,视图只有逻辑定义,而且视图是可以操作基表的。每次使用的时候,只是重新执行SQL。要注意视图是不可以传参的,而存储过程是可以传参的。建原创 2017-03-21 18:24:55 · 782 阅读 · 0 评论 -
oracle数据库导入导出cmd命令
数据库导出功能:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中exp system/manager@TEST file=d:\daochu.dmp full=y2 将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)3转载 2017-03-28 16:10:58 · 361 阅读 · 0 评论 -
ORACLE 错误 904
错误原因: Oracle 版本中IMP和EXP的兼容问题。我这里是因为本机上的oracle版本高于服务器上的oracle版本解决办法: 安装和服务器同版本的10g客户端,在命令窗口化中切换到10g客户端的bin目录下面进行导入就ok了。 为什么要切换呢,因为你的环境变量是设置成11g的导出工具,你需要手动指定你当前导出工具的版本。 网上其他办法: 其实我大致就知道怎么解决了,因为安装完ora原创 2017-03-28 15:10:09 · 7744 阅读 · 0 评论 -
利用PL/SQL从Oracle数据库导出数据和导入数据
1.导出数据:方式一:工具—>导出用户对象—>导出.sql文件 注:这种方式导出的是建表语句和存储过程语句方式二:工具—>导出表 注: 这里是导出表的结构和数据 第一种方式导出.dmp格式的文件,.dmp是二进制文件,可跨平台,还能包含权限,效率不错,用的最为广泛。第二种方式导出.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,适合小数据量导入导出。尤其注意的是表原创 2017-03-28 14:33:36 · 1026 阅读 · 0 评论 -
oracle中的rownum属性
rownum是个伪列,使用时有一些特殊性,可以对你的查询结果集进行的编号,只有当你查询到的数据不为空,rownum才有值,不然不会报错原创 2017-05-17 21:00:29 · 769 阅读 · 0 评论 -
Oracle数据库sql插入随机数
假如设置age为1到1000之内的随机数insert into user(name,age) values("小明",trunc(DBMS_RANDOM.value(1,1000)))原创 2017-04-27 18:20:21 · 2072 阅读 · 0 评论 -
SQL的四种连接-左外连接、右外连接、内连接、全连接、交叉连接
今天在看一个遗留系统的数据表的时候发现平时查找的视图是FULL OUT JOIN的,导致平时的数据记录要进行一些限制性处理,其实也可以设置视图各表为右外连接并在视图上设置各列的排序和筛选条件就可以达到效果。 联接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定联接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选联接条件所选的行。 联接可分为以下几类:原创 2017-08-07 15:24:33 · 518 阅读 · 0 评论 -
数据库的9种对象
数据库对象是数据库的组成部分,常见的有以下几种:1.表(Table )数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于惟一地确原创 2017-08-21 17:20:38 · 4335 阅读 · 0 评论 -
sql中 ${}和#{}的区别
<span style="font-size:18px;">delete from ups_role_permission_dataparams where role_id = #{roleId,jdbcType=INTEGER}</span> 在这里用到了#{},使用#时:1、用来传入参数,sql在解析的时候会加上” “,当成字符串来解析 ,如这里 role_id = “原创 2017-08-11 14:22:12 · 17122 阅读 · 0 评论