
【Database】
冰河winner
个人邮箱:496221132@qq.com
展开
-
MySQL之索引
1、索引组织表在InnoDB中,表都是根据主键顺序组织存放的,称为索引组织表(index organized table)。每张表都有个主键,如果没有显示地定义主键,则会按照如下方式选择或创建主键:如果有非空唯一索引,以建表时第一个定义的非空唯一索引作为主键如果没有非空唯一索引,InnoDB会自动创建一个6字节大小的rowid作为主键InnoDB 存储引擎在绝大多数情况下使用 B...原创 2019-11-15 23:56:00 · 322 阅读 · 0 评论 -
MySQL之后台线程
InnoDB采用的是多线程模型,后台有多个不同的线程负责处理不同的任务。1. Master Theadmaster thread是一个非常核心的后台线程,具有最高的线程优先级。InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread完成的,比如将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页面的刷新、合并插入缓冲、undo页的回收等。Master Threa...原创 2019-11-28 00:19:45 · 711 阅读 · 0 评论 -
MySQL之缓冲池
1、缓冲池的定义应用系统分层架构,为了加速数据访问,会把最常访问的数据放在缓存(cache)里,避免每次都去访问数据库。操作系统会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。MySQL作为一个存储系统,同样具有缓冲池机制,以避免每次查询数据都进行磁盘IO。缓冲池简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。在数据库当中读取页...原创 2019-11-24 23:17:53 · 795 阅读 · 0 评论 -
MySQL之MVCC
1、基本概念MVCC(Mutil-Version Concurrency Control),即多版本并发控制,通过保存数据在某个时间点的快照来实现。根据事务开始的时间不同,每个事务对同一张表,用一时刻看到的数据可能是不一样的。MVCC的基本原理如下:每行数据都存在一个版本,每次数据更新时都更新该版本。修改时Copy出当前版本随意修改,各个事务之间无干扰。保存时比较版本号,如果成功(...原创 2019-11-24 17:28:13 · 397 阅读 · 0 评论 -
MySQL之binlog
1、基本概念二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,但可以通过查询通用日志来查看MySQL执行过的所有语句。...原创 2019-11-24 01:15:38 · 331 阅读 · 0 评论 -
MySQL之事务
1、ACID事务是数据库区别于文件系统的重要特性之一。InnoDB的事务完全符合ACID特性。原子性(Atomicity):操作过程不可分割,要么全部成功,要么全部失败一致性(Consistency):完整性约束不被破坏隔离性(Isolution):事务提交前对其他事务不可见持久性(Durability):事务一旦提交,其结果就是永久性的In弄DB中的ACID特性依靠如下机制实现...原创 2019-11-22 23:32:30 · 256 阅读 · 0 评论 -
MySQL之锁
1、锁的类型InnoDB实现了如下两种标准的行级锁:共享锁(S Lock):允许事务对一条行数据进行读取排他锁(X Lock):允许事务对一条行数据进行删除或更新如果一个事务T1已经获得了行r的共享锁, 那么另外的事务T2可以立即获得行r的共享锁, 因为读取并没有改变行 r 的数据, 称这种情况为锁兼容 (Lock Compatible)。 但若有其他的事务T3想获得行r的排他锁, 则...原创 2019-11-17 22:24:51 · 404 阅读 · 0 评论 -
MySQL之存储结构
1、MySQL的存储结构1.1 MySQL的体系架构ySQL 从第一个版本发布到现在已经有了 20 多年的历史,整个应用的体系结构变得越来越复杂,官方的架构图太庞杂,返璞归真,来看一个简化版的MySQL架构图:连接池、查询缓存、sql解析器、sql优化器等不是MySQL独有的东西,在其他主流数据库中都有各自的组件,只是实现的方式不尽相同而已。MySQL区别于其他数据库的最重要的一个特点就...原创 2019-11-04 00:22:55 · 914 阅读 · 0 评论 -
分布式事务
1、什么是分布式事务当所有操作都针对同一台机器的同一个数据库时,可以依靠数据库自身的锁、重做日志等来保证事务的ACID特性。但是,如果一个事务跨越了多个数据库乃至多台机器呢?这时候就需要引入一种协调机制来保证事务的一致性。分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单的说,就是一次大的操作由不同的小操作组成,这些小的...原创 2019-11-03 02:28:32 · 472 阅读 · 1 评论 -
本地事务
1、引言转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:将A账户的金额减少100元将B账户的金额增加100元在这个过程中可能会出现以下问题:转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增加100元转账操作刚...原创 2019-11-01 00:39:04 · 547 阅读 · 0 评论 -
DB2数据库常用命令
--创建数据库CREATE DATABASEexample AUTOMATIC STORAGE YES --自动存储 ON 'D:\' DBPATH ON'D:\' --指定数据库控制文件的存储路径,和数据库表数据的存储路径 ALIAS example --数据库别名 USING CODESET UTF-8 TERRITORY CN原创 2014-08-21 08:27:44 · 4553 阅读 · 1 评论 -
数据源(连接池)
数据源一般实现自javax.sql.DataSource接口,Spring、Struts、Hibernate等框架都有自己的数据源,Tomcat中也内置了数据源支持,Tomcat使用Jakarta-CommonsDatabase Connection Pool作为数据源的实现,使用时只需按照Tomcat文档配置即可数据源可以配置在server.xml中,也可以配置在context.xml中原创 2015-01-17 13:34:49 · 1660 阅读 · 0 评论 -
JDBC存储和读取二进制数据
以下JSP文件用common-fileupload组件实现文件上传,并将文件以二进制文件的形式存入数据库<%if("POST".equalsIgnoreCase(request.getMethod)){//如果是POST表单 DiskFileUpload diskFileUpload = newDiskFileUpload(); diskFileUpload.setH原创 2015-01-18 11:47:39 · 3095 阅读 · 0 评论