数据库常见问题整理
2017-04-30 11:44
239 查看
1.数据库回滚(rollback)和撤销(undo)的区别
答:回滚:即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,滚回到事务开始时的状态。撤销:恢复程序要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务已经做出的任何对数据库的修改,使得该事务好像根本没有启动一样。
二者主要区别在于事务执行的状态,回滚是在事务未全部完成即在事务中发生的,撤销是在该事务已经执行完成后发生的,不过二者都是为解决事务故障而存在的一种安全机制。
2.数据库事务
答:database transaction,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。原子性:atomic,事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
一致性:consistent,
隔离性:insulation,由并发事务所作的修改必须与其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
持久性:duration,
3.数据库中如何确保添加时某列数据不会重复
为该列添加索引或设置主键。4.
不要使用count(列名)或count(常量)来替代count(*);count(*)会统计值为null的行,而count(列名)不会统计此列为null值得行。5.
使用isnull()来判断是否为null值。注意:null与任何值得直接比较都为null。6.分层领域模型规约
POJO(plain ordinary java object):在本手册中,POJO专指只有setter/getter/toString的简单类。DO(Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。
DTO(Data Transfer Object):数据传输对象,Service和Manager向外传输的对象。
BO(Business Object):业务对象,可以由Service层输出的封装业务逻辑的对象。
Query:数据查询对象,各层接收上层的查询请求。
VO(View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。
ORM(object relation mapping):对象关系映射。
7.如果明确知道只有一条结果返回,limit 1能够提高效率
select * from user where name = ?可优化为:
select * from user where name = ? limit 1原因:你知道只有一条结果,但数据库并不知道,明确告诉它,让它主动停止游标移动
8.把计算放到业务层而不是数据库层,除了节省数据的CPU,还有意想不到的查询缓存优化效果
select * from order where date <= CURDATE()这不是一个好的SQL实践,应该优化为:
$curDate = date('Y-m-d'); $res = mysql_query( 'select * from order where date < = $curDate');原因:
释放了数据库的CPU;
多次调用,传入的SQL相同,才可以利用查询缓存
相关文章推荐
- 系统数据在不同数据库迁移时常见问题整理
- 数据库间数据迁移常见问题解决方案整理
- Wap中常见Asp+Wml问题整理
- JSP访问数据库的问题整理
- asp + Access 常见的数据库访问失败问题 Microsoft JET Database Engine 错误 '80004005' 解决办法
- 整理了一下Asp.net源码常见问题(完善中...),欢迎大家补充修正(最后更新于06-01)!
- FLASH常见问题收集整理
- JavaScript常见问题整理(2)
- [导入]数据库应用系统设计面临的常见的大的方面的问题?
- 对VC++一些常见问题的整理(www.sunxin.org)
- 数据库常见问题集合
- asp + Access 常见的数据库访问失败问题 Microsoft JET Database Engine 错误 '80004005' 解决办法
- AIX常见问题整理
- 五个常见 PHP 数据库问题
- 对VC++一些常见问题的整理(转自程序员之家论坛)
- 水晶报表常见问题整理之一(20050417)
- Win2003下常见问题整理[转]
- 五个常见 PHP 数据库问题
- 常见字符集简介 数据库以及jsp中文乱码问题以及Struts 中文乱码问题 Filter解决