![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
define_us
互联网编程/架构设计/数学崇拜
展开
-
Mysql缓存的相关知识
关于peparedStatementhttps://blog.csdn.net/alex_xfboy/article/details/83901351关于查询结果原创 2021-03-15 19:26:19 · 76 阅读 · 0 评论 -
数据库中的MVCC机制
基础知识首先要了解数据库中的redo 和undo机制。https://blog.csdn.net/define_us/article/details/84139912简介是一种多版本控制的方式。可以用来代替行级锁。假设没有MVCC,为了实现读已提交的隔离级别,第二个事务在修改第一个事务的行时,就必须等待第一个事务完成。相当于一个行级别锁。原理trx_id这个id用来存储的每次对某条聚簇索引记录进行修改的时候的事务id。roll_pointer它指向这条聚簇索引记录的上一个版本的位原创 2020-12-26 00:24:59 · 179 阅读 · 0 评论 -
mybaits的原理和应用
插件关于Mybatis中插件的声明需要在configuration的配置文件中进行配置。<?xml version="1.0" encoding="UTF-8" ?>&amp原创 2018-07-30 19:28:36 · 201 阅读 · 0 评论 -
oracle闪回
概述闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复(多数闪回功能都能在数据库联机状态下完成)。需要注意的是,闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误,闪回技术就回天乏术了,还是得借助于Oracle一些高级的备份恢复工具如RAMN去完成(这才是Oracle强大备份恢复机制的精髓所在啊)撤销段(UNDO SE...原创 2018-11-07 16:44:02 · 578 阅读 · 0 评论 -
数据库oracle中的dataguard
DataGuard是甲骨文推出的一种高可用性数据库方案,在Oracle 8i之前被称为Standby Database。从Oracle 9i开始,正式更名为Data Guard。它是在主节点与备用节点间通过日志同步来保证数据的同步,可以实现数据库快速切换与灾难性恢复。Data Guard只是在软件上对数据库进行设置,并不需要额外购买任何组件。用户能够在对主数据库影响很小的情况下,实现主备数据库的同...原创 2018-11-07 16:25:21 · 286 阅读 · 0 评论 -
数据库中的oracle中的回滚段
转载自http://blog.itpub.net/29785807/viewspace-1587392/回滚段概述回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。回滚段的作用事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在...转载 2018-11-07 16:21:17 · 568 阅读 · 0 评论 -
Spring-JDBC简介
事务Spring事务的七种隔离级别定义如下 使用第一步,配置事务管理器,并开启事务注解 <!-- 配置事务管理器 --> <bean id = "transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManage...原创 2018-08-10 18:39:54 · 434 阅读 · 0 评论 -
ORACLE SQL常见命令
建立新表CREATE TABLE GDL.GDL_EVENTENGINE_ADMIN(ID NUMBER NOT NULL PRIMARY KEY,APPID VARCHAR(50) NOT NULL,RELATION VARCHAR(50) NOT NULL,EVENTTYPE VARCHAR(50) NOT NULL,CREATETIME DATE NOT NULL,U...原创 2018-07-05 11:09:27 · 325 阅读 · 0 评论 -
sql优化
exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条件语句不能返回记录行,则当前loop到的这条记录被丢弃,exists的条件就像一个bool条件,当能返回结果集则为true,不能返回结果集则为 false...原创 2018-07-05 11:03:53 · 94 阅读 · 0 评论 -
数据库和databus
原理Databus采用的是数据库日志挖掘的方式,这种方式最大的好处是能最大限度的保持一致性,而且具有最有的性能,但是缺点就是实现起来极为困难。因为Oracle和MySQL这样的数据库有自己特有的私有交易日志格式以及复制冗余解决方案,每次版本升级之后可能都会导致日志挖掘的代码失败,需要持续的保持升级。Databus Relay:从源数据库中的Databus源中读取变化的行并序列化为Datab...原创 2018-11-12 17:22:48 · 574 阅读 · 0 评论 -
数据库集群和分布式事务和JTA
分布式事务XA协议XA协议由Tuxedo首先提出的,并交给X/Open组织,作为资源管理器(数据库)与事务管理器的接口标准。目前,Oracle、Informix、DB2和Sybase等各大数据库厂家都提供对XA的支持。XA协议采用两阶段提交方式来管理分布式事务。XA接口提供资源管理器(资源)与事务管理器(可以时中心节点,也可以时请求事务的客户端)之间进行通信的标准接口。这两者分别承担事务参与者...原创 2018-10-19 16:45:47 · 464 阅读 · 0 评论 -
Oracle数据库的RAC
原创 2018-11-14 17:59:55 · 205 阅读 · 0 评论 -
数据库的REDO和UNDO机制
UNDO和REDO机制redo undo机制是在数据库引擎曾实现的。undo机制UNDO机制如下:假设有A、B两个数据,值分别为1,2。A.事务开始.B.记录A=1到undo log.C.修改A=3.D.记录B=2到undo log.E.修改B=4.F.将undo log写到磁盘。G.将数据写到磁盘。H.从磁盘文件中删除之前的undo记录(事务提交)核心在于先写undo到...原创 2018-11-16 15:20:29 · 2179 阅读 · 0 评论 -
mysql中的单机事务机制
基础阅读https://blog.csdn.net/define_us/article/details/83089273使用共享锁(S)SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE排他锁(X)SELECT * FROM table_name WHERE ... FOR UPDATE当然,也可以直接指定事务的隔离级别s...原创 2019-01-28 16:07:49 · 213 阅读 · 0 评论 -
数据库中的for update
原文https://blog.csdn.net/u011957758/article/details/75212222前言近期开发与钱相关的项目,在高并发场景下对数据的准确行有很高的要求,用到了for update,故总结一波以便日后留恋。本文讲解几个点:for update的使用场景for update如何使用for update的锁表for update的注意点for upd...原创 2019-02-05 20:06:56 · 616 阅读 · 0 评论 -
SQL优化——索引
基本概念索引选择性索引选择性是指不重复的索引值和数据表的总记录数的比值,选择性越高查询效率越高,因为选择性越高的索引可以让数据库在查询时过滤掉更多的行。唯一索引的选择性是1,这时最好的索引选择性,性能也是最好的。联合索引联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a...原创 2019-03-11 10:27:27 · 91 阅读 · 0 评论 -
数据系统的基本概念
DDL数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。例子如下alter table XXX add columns(C1 bigint comment '是否双十一提额准入',C2 string comment '双十一提额不准入原因');drop TABLE IF EXISTS XXX;CREATE ...原创 2019-03-30 12:15:17 · 996 阅读 · 0 评论 -
OceanBase数据库
由支付宝创造的金融级数据库。已经开源。https://oceanbase.alipay.com/原创 2019-03-24 11:08:48 · 2747 阅读 · 0 评论 -
Oracle中的表的组织结构
表空间Oracle数据库开创性地提出了表空间的设计理念一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。每个ORACLE数据库均有SYSTEM表空间,这是数据库创建时自动创建的。当然,对于小型应用,你也可以只使用该表空间。数据块(DATA...原创 2018-07-04 17:11:07 · 268 阅读 · 0 评论 -
数据库原理
一阶段锁协议和两阶段锁协议一阶段锁协议要求事务在执行前对自己需要的所有资源一次性加锁。 二阶段锁协议不要求对自己所需要的所有资源一次性加锁。可以在使用前加锁。但是所有加锁操作必须在所有解锁操作之前。 一阶段锁协议显然符合二阶段锁协议。 二阶段锁协议可能带来死锁。可以证明,如果事务是良构的且是两阶段的,那么任何一个合法的调度都是隔离的。。良构表示非死锁情况,隔离指隔离的最高等级(可串行化)...原创 2018-06-28 19:36:17 · 629 阅读 · 0 评论 -
数据库种的一些工具
1、存储过程和函数 而存储过程可以返回多个。存储过程是为了尽量发挥一个数据库软件的性能而设计的。定义存储过程的语法如下create proc usp_StudentByGenderAge @gender nvarchar(10) [='男'], @age int [=30] as select * from MyStudent where FGender=@gender and FAge=原创 2016-08-15 19:38:57 · 272 阅读 · 0 评论 -
数据库基础教程(1):windows下环境配置和初步操作
首先登陆官网。我们在这里选用的是社区版本的win64sql。版本号为5.7.13 在网站上,我们很容易就找教程和技术手册 http://dev.mysql.com/doc/refman/5.7/en/tutorial.html 当然你也可以 mysql –help来寻求帮助 安装完成后首先修改默认设置my_default.ini# For advice on how to change原创 2016-07-14 12:14:12 · 488 阅读 · 0 评论 -
SQL常用实际命令
假设我有一张航班表 我想看看我的表究竟有多长呢? select count(*) from flights;然后我想看看这些航班究竟属于那些航空公司。也就是提取出不重复的航公公司字段 select distinct FlightCompany from flights; 最后的结果只出现一列。显示的是表中出现的所有航空公司。每个航空公司只出现一次然后我又想算一算一共有多少航空公司 sele原创 2016-08-18 09:14:00 · 1103 阅读 · 0 评论 -
SQL语法例子
查找数据 SELECT 列名称 FROM 表名称 SELECT * FROM 表名称eg SELECT LastName,FirstName FROM Persons 其中LastName是字段名。Persons是表的名称SELECT DISTINCT 列名称 FROM 表名称 表示仅列出不重复的该列的项。SELECT 列名称 FROM 表名称 WHERE 列 运算符 值 eg SELEC原创 2016-08-03 08:37:40 · 964 阅读 · 0 评论 -
SQL语法体系
SQL是一种声明式语言,如果一般命令式语言是告诉计算机如何做一件事的话,声明式语言就是告诉计算机该做一件什么样的式。SQL语言的标准语法顺序如下 select [distinct] from where group by having union order by 然而,执行顺序却是 FROM: FROM才是执行的第一步 WHERE GROUP BY HAVING SELE原创 2016-09-19 23:22:06 · 490 阅读 · 0 评论 -
数据库Oracle的具体原理
会话(session)用户登录会产生会话,用户登出会结束会话后台进程必须的: CKPT RECO 可选择的:内存结构SGA(System Global Area):由所有服务进程和后台进程共享; PGA(Program Global Area):由每个服务进程、后台进程专有;每个进程都有一个PGA。管理水位线 HWM 就犹如一个水库中的最高水平线...原创 2017-09-27 11:19:41 · 341 阅读 · 0 评论 -
数据库中的算法实现
joindistinct将表中每一列放入一个hash结构中,最终,这个hash结构中有多少个key,也就是去除重复后的结果。 所以,在当distinct结果集较大时,该方法的内存消耗成为瓶颈。group by先对col进行排序,排序的事件复杂度为nlogn,空间复杂度为1。原创 2017-11-01 14:18:23 · 2372 阅读 · 0 评论 -
数据库总结-mysql
参考文献:http://blog.csdn.net/flyingfalcon/article/details/53045672mysql系统命令手动解锁SHOW PROCESSLIST;kill 816934查询大小查询数据库select truncate(sum(data_length)/1024/1024,2) as data_size,tru...原创 2017-09-02 18:22:43 · 529 阅读 · 0 评论 -
oracle中的位图索引
原理使用须知如果用户查询的列的基数非常的小, 即只有的几个固定值,如性别、婚姻状况、行政区等等。要为这些基数值比较小的列建索引,就需要建立位图索引。位图索引适合静态数据,而不适合索引频繁更新的列。这个原因是因为在更新该列时,需要同时更新系统中的该列该值对应位图向量,此时,系统会将所有该列为该值的行锁定。位图索引创建时,不需要进行排序,因此速度较快;而B-tree索引创建时,需要排...原创 2018-03-15 10:41:55 · 894 阅读 · 0 评论 -
oracle中的复合索引
用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。注意事项复合索引具有前缀性!也就是建立复合索引时字段顺序很重要。查询sql必须包含复合索引的第一个,才会使用复合索引,而不是全表扫描。oracle 9i后提供了skip scan index,来避免上面一点导致的问题。skip scan index功能适合于什么情况呢?如果oracle发现第一个字段值很少的情况下,例如假...原创 2018-03-15 10:52:37 · 1268 阅读 · 0 评论 -
sql优化:JOIN
连接总是需要顺序的。例如三个表A,B,C。A JOIN B产生结果集合D,D再和C连接产生最终结果。连接就是这么完成的。oracle从来不会多个表同时连接的。 优化器针对可能的连接顺序,连接方法和可行的访问路径,产生一些执行计划。然后优化器估计每个计划计划并选择具有最低消耗(成本)的那个。hash join执行计划格式如下 hash join b...原创 2018-03-23 11:30:25 · 368 阅读 · 0 评论 -
sql优化:exists,in关键字
exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录,反之如果exists里的条 件语句不能返回记录行,则当前loop到的这条记录被丢弃,exists的条件就像一个bool条件,当能返回结果集则为true,不能返回结果集则为 falseini...原创 2018-03-29 10:07:00 · 299 阅读 · 0 评论 -
mysql中的索引
索引值会加快查询速度,但是会降低写入速度。 索引类型唯一性索引: 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 唯一性索引列允许空值,而主键列不允许为空值。 主键列在创建时,已经默认为空值 + 唯一索引了。 主键可以被其他表引用为外键,而唯一索引不能。 一个表最多只能创建一个主键,但可以创建多个唯一索引。 主键更适合那些不容易更改的唯一标识,如自动递增列、身份...原创 2018-03-29 10:31:43 · 469 阅读 · 0 评论 -
事务的基本概念
事务数据库事务必须满足4个特性(ACID) 原子性,事务中的指令要不都完成,要不都不完成 一致性 隔离性 持久性隔离性有几个等级。而数据的一致性是最终的目的。 脏读:A事务读取了B事务已经更改但是没有提交的数据 不可重复读:A事务读取了B事务已经更改且已经提交的数据。也就是说A事务读取了数据,然后B事务更改数据并提交,而此时A事务还没有结束,如果...原创 2018-03-29 10:35:24 · 201 阅读 · 0 评论 -
Mongo
MongoDB作为典型的NoSql数据库,一个主要目标就是尽可能的提升系统吞吐量。 存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。集群相关Basic availableSoft-state 允许短期内数据不同步Eventually Consistent 数据的最终一致性在一个MongoDB的shard集群中,...原创 2018-05-02 10:53:28 · 207 阅读 · 0 评论 -
JAVA与关系形数据库
JDBCJDBC是JDK提供的JAVA访问关系型数据库的SPI,有多种实现方式。ODBC是微软提出的!O是open不是oracle。也是最造被开发者和数据库厂商接收的交互方案。所以可以在ODBC的基础上构建JDBC,称为JDBC-ODBC Bridge Driver。ODBC通过调用数据库的本地客户端的API和远程数据库通信交互。当然,可以直接调用数据库本地的客户端。也就是Native...原创 2018-05-11 17:35:12 · 430 阅读 · 0 评论 -
Mysql深入浅出之架构
概述线程模型Master Thread Master Thread是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲(INSERT BUFFER)、UNDO页的回收等。每秒一次的操作包括:IO Thread 被存储引擎使用。innodb使用AIO模型(也就是NIO2)。 Purge Thread ...原创 2018-06-28 19:19:17 · 251 阅读 · 0 评论 -
数据库基础教程(2):范式
第二范式: 所谓第一范式,是指每个属性的值域的每一个值都是不可分割的。不做解释。所谓第二范式,是指关系模式R中的每一个非主属性完全依赖于R的某个候选键。 显然,要理解这句话,必须要理解候选键。而这又会扯出主键,超键,外键等相关概念。超键是一个属性集,可以用来表示唯一元组。也就是说,任意两条记录不存在这个属性集中的所有属性对应的值,完全相等的情况。显然,最普通的情况,一个元组中的所有属性自然构成一原创 2016-08-15 18:35:36 · 338 阅读 · 0 评论