内存数据库
数据在内存中,由数据库服务器定时将内存备份到磁盘中,该数据库多保存在一个文件中,可实现数据库的一般操作
主要应用于吞吐量大、实时性的系统中,通过建立内存数据库
缺点: 数据库级别的锁; 删除和创建索引比较慢; 不具备用户权限分级
数据库常用概念
OLAP: 管理数据的多维结构,并进行计算和统计,多用于决策支持
Notification Service: 可生成、发送通知的应用程序
Integration Service: 不同数据源数据集成
复制:不同数据库之间
全文检索:对表中纯字符的列检索单个词或短语,返回true|false或者一个表
批处理:从client一次发送多条sql到服务器端执行
游标:程序一次获取一行或多行记录
分布式查询:从多异构数据源中获取数据
存储过程
由应用程序调用执行,可输入参数,进行流程控制的sql语句组合
好处:
多应用程序共享,屏蔽数据库结构
定义:
由应用程序调用执行,可输入参数,进行流程控制的sql语句组合,存储过程可调用另一存储过程
触发器
是一种特殊存储过程,处理表间管理,应用于根据某些操作自动完成相关任务
DML触发器
对表和视图的数据进行insert delete 和update操作。
作用:与check约束不同,DML触发器可饮用其他表中的列;一个表中多个DML触发器可应用于同一修改语句;触发器可评估修改前后表状态,并根据差异采取措施
类型:事前和事后触发;语句级触发和行级触发(每一行触发一次)
性能开销很低,运行时间大部分引用其他表
DDL触发器
数据定义时触发,用于审核和规范数据库操作,如create alter drop 激发
作用:防止对数据库的修改;记录数据库中的更改事件
视图
是一个虚拟表,内容由创建的select定义,数据库中只存储定义,数据引用时动态生成,更新时有限制
作用
保证基表安全性(为不同用户分组)、方便性(获得多个表间的复合信息)。
对于大量行进行复杂计算的视图,1)很少更新基础数据,则在视图上创建唯一聚集索引;2)经常更新基础数据,则不用视图;3)定期更新基础数据,在更新前删除所有索引视图,然后重新生成。
事务
主要用于原子性操作,在程序中设定事务的启动和回滚,通过加锁实现并发控制。应用程序不直接请求锁,由数据库自己管理。
锁:事务下访问一个数据对象时需要加锁
编写有效的事务
在启动事务前,获取所有需要的用户输入
尽可能使事务简短
尽量使用只读事务
尽可能使访问的数据量最小
索引
实现快速查找,包含一列或多列形成的键,创建在有unique约束的列上
分为聚集索引(排序存储)和非聚集索引。
Primarykey和unique定义的列会自动创建索引。
设计(最常用查询的where)如下:
1. 索引过多,会影响insert update和delete
2. 为where和连接条件上的列创建非聚集索引
3. 当插入或修改记录时,使用delay_key_write暂停对索引刷新,等插入完后再进行
4. 限制:对具有多个重复值的列不要建立索引。 liek和RegExp第一个是通配符,不能使用索引