千家信息网

数据库相关基础是怎么样的

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,数据库相关基础是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。数据库相关基础0.1数据库基础 ---------------
千家信息网最后更新 2024年11月11日数据库相关基础是怎么样的

数据库相关基础是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

数据库相关基础

0.1数据库基础 ---------------------------------
这段代码有什么不足之处?
try {
Connection conn = ...;
Statement stmt = ...;
ResultSet rs = stmt.executeQuery("select * from table1");
while(rs.next()) {}
} catch(Exception ex) { }
答:没有finally语句来关闭各个对象,另外,使用finally之后,要把变量的定义放在try语句块的外面,以便在try语句块之外的finally块中仍可以访问这些变量。

0.1.1 不借助第三方工具,怎样查看sql的执行计划?
set autot on
explain plan set statement_id = &item_id for &sql;
select * from table(dbms_xplan.display);

0.2数据库应用 ---------------------------------
0.2.1 大数据量下的分页解决方法。
答:最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容。再sql语句无法实现分页的情况下,可以考虑对大的结果集通过游标定位方式来获取某页的数据。
sql语句分页,不同的数据库下的分页方案各不一样,下面是主流的三种数据库的分页sql:
sql server:
String sql =
"select top " + pageSize + " * from students where id not in" +
"(select top " + pageSize * (pageNumber-1) + " id from students order by id)" +
"order by id";
mysql:
String sql =
"select * from students order by id limit " + pageSize*(pageNumber-1) + "," + pageSize;
oracle:
String sql =
"select * from " +
(select *,rownum rid from (select * from students order by postime desc) where rid<=" + pagesize*pagenumber + ") as t" +
"where t>" + pageSize*(pageNumber-1);
0.2.2 oracle index ?
1.index需要储存空间和I/O操作。
2.index的目的是加快select的速度的。
3.insert,update,delete数据oracle会同时对索引进行相应的调整,因此会增加一定的消耗。
4.使用index一定能加快select速度吗?不是的,数据少和巨大时index会影响select的速度,因此如果查询速度可以满足,就不要建index。
5.Index 对null 无效。
说说索引的组成?
索引列、rowid

0.2.3 数据库性能优化主要一下几个方面:?
1、sql语句的执行计划是否正常
2、减少应用和数据库的交互次数、同一个sql语句的执行次数
3、数据库实体的碎片的整理(特别是对某些表经常进行insert和delete动作,尤其注意,索引字段为系列字段、自增长字段、时间字段,对于业务比较频繁的系统,最好一个月重建一次)
4、减少表之间的关联,特别对于批量数据处理,尽量单表查询数据,统一在内存中进行逻辑处理,减少数据库压力(java处理批量数据不可取,尽量用c或者c++ 进行处理,效率大大提升)
5、对访问频繁的数据,充分利用数据库cache和应用的缓存
6、数据量比较大的,在设计过程中,为了减少其他表的关联,增加一些冗余字段,提高查询性能

0.2.4 Oracle用了多久?char与varchar2的区别?
Char是固定长度字符串,varchar2是变长字符串。
比如在char(10)和varchar2(10)中插入test字符串那么char(10)类型长度就是10,不足的用空格补齐,而varchar2(10)类型长度就是4。

0.2.5 如何跟踪某个session的SQL?
exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);
select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1);
exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,");

0.3数据库架构和扩展 ---------------------------------
0.3.1 ACID, BASE和CAP概念解释?
分布式领域CAP理论
Consistency(一致性), 数据一致更新,所有数据变动都是同步的,最终一致性
Availability(可用性), 好的响应性能
Partition tolerance(Tolerance of network Partition分区容错性) 网络分区容忍性(可理解为部分节点故障或节点之间连接故障下系统仍可正常工作)
定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
什么是ACID?
DBMS 强调ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性 (Durability)。其中的一致性强调当程序员定义的事务完成时,数据库处于一致的状态,如对于转帐来说,事务完成时必须是A少了多少钱B就多了多 少钱。
什么是BASE?
BASE:Basically Availble --基本可用;Soft-state --;Eventual Consistency --最终一致性
0.3.2 说出数据连接池的工作机制是什么?
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
实现方式,返回的Connection是原始Connection的代理,代理Connection的close方法不是真正关连接,而是把它代理的Connection对象还回到连接池中。
0.3.3 DELETE和TRUNCATE的区别?
答:1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
  2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
  3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
  4、TRUNCATE不能触发任何DELETE触发器。
  5、不能授予任何人清空他人的表的权限。
  6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
  7、不能清空父表。
比较truncate和delete 命令?
解答:两者都可以用来删除表中所有的记录。区别在于:
truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.

0.3.4 索引重建的概念? 说说索引重建的意义?
当我们创建索引时,oracle会为索引创建索引树,表和索引树通过rowid(伪列)来定位数据。当表里的数据发生更新时,oracle会自动维护索引树。但是在索引树中没有更新操作,只有删除和插入操作。
例如在某表id列上创建索引,某表id列上有值"101",当我将"101"更新为"110"时,oracle同时会来更新索引树,但是oracle先将索引树中的"101"标示为删除(实际并未删除,只是标示一下),然后再将"110"写到索引树中。
如果表更新比较频繁,那么在索引中删除标示会越来越多,这时索引的查询效率必然降低,所以我们应该定期重建索引。来消除索引中这些删除标记。
一般不会选择先删除索引,然后再重新创建索引,而是rebuild索引。在rebuild期间,用户还可以使用原来的索引,并且rebuild新的索引时也会利用原来的索引信息,这样重建索引会块一些。

0.3.5 如何查看生产环境数据库服务器SQL性能状态?
 TKPROF SQL trace 工具收集正在执行的SQL的性能状态数据并记录到一个跟踪文件中。 这个跟踪文件提供了许多有用的信息,例如解析次数。执行次数,CPU使用时间等。这些数据将可以用来优化你的系统。
设置SQL TRACE在会话级别:
 有效
 ALTER SESSION SET SQL_TRACE TRUE
 设置SQL TRACE 在整个数据库有效性, 你必须将SQL_TRACE参数在init.ora中设为TRUE, USER_DUMP_DEST参数说明了生成跟踪文件的目录

关于数据库相关基础是怎么样的问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

数据 索引 数据库 语句 一致 更新 一致性 字段 性能 程序 系统 查询 基础 次数 速度 处理 跟踪 频繁 分布式 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库设计 评审 网络安全性几年进行一次检测 ftp上的文件在服务器 宜良方便软件开发市场报价 工行软件开发中心招聘启事 数据库系统原理宋金玉习题解答 见面课网络安全与伤害 宝德服务器登上月球 三级网络技术视频周跃 迷你玩家炸服务器会犯罪吗 法律数据库复制 部队网络安全讨论个人发言 sjtu网络安全 计算机网络技术的大学课程 共享麻将机软件开发 深信服软件开发面试会编程吗 数据库如何保存大文件 wincc与sql数据库 崇明区提供数据库系统销售职能 一呼百应网络技术公司怎么样 怎么看分布式数据库事务 无法激活服务器暂时不可用请尝试 服务器蓝屏查看系统日志 串口服务器是通讯管理机吗 长沙澳搏软件开发公司 网络安全国际交流合作 黑洞加速服务器怎么样 软件开发发言稿 反电诈网络安全教育简讯 上市公司的数据库通常是什么样的
0