赞
踩
数据库的备份如何实现的(mysql)(按照数据库的状态,分为冷备份【数据库处于关闭状态】,热备份【数据库处于运行状态】,逻辑备份【使用软件将数据写到一个文件上】,按照备份恢复的方式分为逻辑备份【备份sql语句,速度慢,占用空间小】和物理备份【备份文件,速度快,占用空间大】)
1) 完全备份。备份整个数据库,包括表,索引,视图,存储过程等
2) 事务日志备份。使用事务日志,只备份上次备份以来对数据库做的改变。
3) 差异备份。不使用事务日志,备份改变的数据
4) 文件备份。使用文件存储备份数据
常见的备份工具:
1) mysqldump工具:支持基于innodb的热备份,属于逻辑备份,慢,可以实现时间点的恢复,不需要对数据加锁,加选项【–single-transaction】即可;对于myisam存储引擎的表,只能温备份,备份前加读写锁,防止数据的写入【–lock-all-tables】
2) 基于LVM快照备份;tar包备份;percona提供的xtrabackup工具;平台 p8net mysql管理工具MyAdmin v1.0 (mysql 定时备份工具)
数据库很多的数据怎样提高检索效率(数据库设计,SQL语句):出发点为避免全表扫描
数据库事务,事务的特性,具体原理
事务的特性:原子性【事务要么全部执行,要么全部回滚,执行失败】,一致性【事务提交后,数据库必须从一个状态转变为另一个一致性的状态,完整性约束没被破坏】,持久性【事务一旦提交,不会再回滚】,隔离性【两个事务在各自提交之前不可见,事务并发独立】。
具体原理
1) 原子性:事务开始前,会先将旧数据保存一份到undo log中,如果在这中间环节出现故障,那么,会通过之前版本的undo log 恢复到之前版本数据库
2) 一致性: 和原子性一样,原子性是实现一致性的保证
3) 持久性:undo log保存旧数据,redo log保存新数据。undo log保存旧数据,redo log保存新数据,在事务提交时只需将redo log 持久化到磁盘上。
4) 隔离性:加锁实现,四种隔离级别,每种的加锁方式不同,实现的隔离性能也不同
事务隔离的级别
级别 说明 脏读 不可重复读 幻读
Read uncommitted “有事务未提交时也能读” √ √ √
Read committed 理解为“所有事务提交后才能读”,所以解决了脏读问题 × √ √
Repeatable read “可重复读”,解决了脏读和不可重复读 × × √
Serializable “序列化”,解决了脏读、不可重复读、幻读 × × ×
数据库视图(view):优点【简化复杂查询,限制用户对数据库的访问,可以启用计算列,向后兼容】,缺点【基于视图查询慢,修改数据需要维护视图】
常见操作:
不允许更新视图的情况:字段来自库函数或者字段表达式或常数;由两个以上的基表导出;定义中有嵌套查询,DISTINCT任选项,GROUP BY子句或者聚集函数;不允许更新的视图定义的视图
更新的情况:由一个基表定义的视图,只含有基表的主键或候补键,并且视图中没有用表达式或函数定义的属性。
关系数据库有哪些:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL
数据库CRUD(create 添加数据read读取数据 update 修改数据delete删除数据)
数据库挂了,用户就不能访问了吗,一 个地区的消息队列机子全挂了怎么办
你的数据库一会又500个连接数,一会有10个,你分析一下情况
如果从数据库挂掉了,会发生什么
数据库表相同元素的查询
内连接的查询语句
Sql中的like通配符,去重
Java连接数据库,并在数据库插入一行数据
Sql,查询班级男女生人数
统计各班人数和降序排列
数据库如果索引是 sno,name,aga,查询只是 sno,age 能命中吗
mysql创建一个学生表,包含id(int)和name(string),主键的创建,mysql建立索引
sql如何查找某段时间内发表过动态的ip数目
写一个sql,把userid去重,保留id比较小的数据(select id,userid from table group by userid;)
学生表,有学生id,班级,科目,成绩 实现查找每门科目的第一名
存在两个数据库表A(a1,a2,a3)和B(b1,b2,b3),写出A表中a3字段和B表中b1字段相等,且按照A表a1字段递减排序的记录(A.a1,A.a2,A.a3,B.b2,B.b3)输出第10-20条记录
数据库如何查看自己想查看的排名前10的数据
查询第5条到第10条数据
1)查询前十条数据:Select * from serv_history_517 where rownum<11;
2)查询后十条数据:select * from (select rownum no ,serv_id from serv_history_517 ) where no>10
3)查询第五条到第十条的数据(有六条数据):select * from (select rownum no ,serv_id from serv_history_517 ) where no>4 and no <11;
数据库分页,limit3 5的含义
数据库分页:需要查询几条数据,而不是全部的查询出结果,比如sql的limit
select*from user limit 2,3 --注意是第2条数据之后,不包含第2条数据。3代表总共查询3条记录 如果是11到15的话就是limt 10,5
Sql,手写去重
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。