备忘之数据库
来源:互联网 发布:微博淘宝客 编辑:程序博客网 时间:2024/06/06 18:49
1. 数据独立性
数据独立性是指数据的组织和存储方式与应用程序互不依赖、彼此独立的特性,分为存储数据独立性和概念数据独立性。假设没有存储数据独立性的话,应用程序直接操作存储文件,当存储文件改变结构的时候,应用程序也要跟着改变,不方便。而概念数据独立性指的是用户可能不需要整个概念文件,在概念文件之上在加上一个外部文件的话可以使得不同用户可以同时访问概念文件的不同部分
基于此,共分3层存储文件(存储文件)-->概念文件(基本表)-->外部文件(视图);对应于数据库的三层模式结构(外部模式,概念模式,存储模式)
2. 完整性约束(实体完整性、参照完整性、用户定义完整性),保证数据的正确性
3. 存储过程的作用 1)减少网络上的拥塞--不使用存储过程,所有的数据处理都在应用程序中完成,而使用存储过程,数据处理可以在数据库服务器上完成(存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。2)安全控制
缺点就是大量的利用过程,会对服务器压力比较大。
4. 事务是用户完成一个特定工作的一组命令,事务要么完全执行(提交),要么完全不执行(撤销)。事务和程序不同,一个程序可以包含多个事务。事务的4个特性ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability )
5. 并发事务的干扰问题:丢失更新问题、未提交依赖问题(脏数据问题)、不一致分析问题(不可重复读问题)、幻象读问题
6. 可串行性是多个事务并发执行的正确性准则,判断方法有3个步骤
7. 并发控制的主要技术是封锁,其基本思想是当需要查询或更新数据时,先对数据进行封锁,以避免来自其他事务的干扰。
数据库管理系统一般提供了三种封锁机制:共享封锁、独占封锁、更新封锁,封锁的对象可以是关系也可以是元组
共享封锁是为读操作作设置的一种封锁,所以也称作读封锁,或简称S锁,独占封锁也叫排他封锁,它是为修改操作设置的一种封锁,也称为写封锁,或简称X锁。更新封锁类似。
8. 封锁粒度,锁定在较小的粒度(例如行)可以增加并发操作的性能,但系统开销也较大(需要系统控制更多的锁),锁定在较大的粒度(例如表)会降低操作的并发性,系统开销比较小
9. 使用封锁时,既要降低封锁的成本,又要提高并发操作的性能;意向锁:当需要在某些底层资源(如元组)上获取封锁时候,可以先对高层资源(如表)实施意向锁,意向锁可以提高性能,因为系统仅在表级检查意向锁来确定是否可以安全地获取该表上的锁,而不需要检查表中的每个元组上的锁,以确定事务是否可以锁定整个表; 系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突,还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突,显然,这样的检查方法效率很低。为此引进了意向锁。有意向共享、意向排他、共享意向排他三种锁
意向共享(IS)表明事务的意向是读取层次结构中的部分而不是全部底层资源,意向排他(IX)表明事务的意向是修改层次结构中的部分而不是全部资源。共享意向排他(SIX)表明事务的意向是读取层次结构中的全部资源并修改部分而不是全部底层资源
10. 避免死锁的方式:相同顺序法、一次封锁法、两阶段封锁协议
11. 发现死锁的有效方法是等待图法,用节点来表示正在运行的事务,用有向边来表示事务之间的等待关系,T->S表示T等待S。如果有向图中发现回路,则说明发生了死锁。发现死锁后解决死锁的一般策略是:自动使“年轻”的事务先退回去,然后让“年老”的事务先执行,等“年老”的事务完成并释放封锁后,“年轻”的事务再重新执行。
12. 隔离级别:未提交读、提交读、可重复读、可串行化 级别越高,并行性约低,隔离性越好
13. 全部表格-->将所有栏目分解为最小数据项-->1NF关系-->消除部分函数依赖-->2NF关系-->消除传递函数依赖-->3NF关系-->消除主属性对非主属性的函数依赖-->BCNF关系-->消除非平凡多值依赖-->4NF关系。规范化的目的是为了消除关系上的异常操作。
- 备忘之数据库
- access数据库备忘
- 数据库常用函数备忘
- 数据库操作备忘
- oracle 连接数据库 【备忘】
- MYSQL数据库备忘
- Django 数据库操作备忘
- 代码备忘:数据库游标
- Android数据库代码备忘
- Grails 数据库实例备忘
- 数据库核心知识备忘
- MongoDB数据库设计备忘
- NC6-数据库安装备忘
- 还原oracle数据库备忘
- zmud之技巧备忘
- 备忘之操作系统
- 备忘之网络
- 智能ABC之备忘
- PHP ZIP解压缩
- 在.NET使用JSON作为数据交换格式
- [转载]关于驱动中的ObReferenceObjectByName 和 IoGetDeviceObjectPointer
- Sql Server 中日期格式化函数
- Oracle Net Manager 的使用方法(监听的配置方法)
- 备忘之数据库
- Fedora下yum源配置问题和星际译王的安装问题
- PL/SQL集合类型详细讲解
- 如何在LoadRunner中监控oracle数据库
- singleton class C++ Singleton 模式
- SQL Server存储过程入门案例详解[转]
- MS SQL 获取数据库名,表名,列名,说明等信息(SQL Server 2005 测试通过)
- simhash算法的原理
- Bloom Filter概念和原理