数据库杂记

来源:互联网 发布:ubuntu游客创建用户 编辑:程序博客网 时间:2024/06/01 19:44
一 . 数据库知识:
        事务:事务是用于保持数据的一致性,是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。
        事务的特性:
            (1)原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);
            (2)一致性(Consistency):当事务完成时,数据必须处于一致状态
            (3)隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务. 否则会出现脏读,幻读,不可重复读
            (4)永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性.

二 .  数据库中“索引”的优点与缺点
        创建索引可以大大提高系统的性能:
            第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
            第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
            第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
            第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
            第五,使用索引,在查询的过程中,使用优化隐藏器,提高系统的性能。

        增加索引也有许多不利的方面:
            * 创建索引和维护索引需要时间
            * 索引占用物理空间
            * 当对表中的数据进行 增,删,改时,索引也要动态维护,降低了数据的维护速度

        怎样建立索引?(80%)
                - 使用 SQL 创建索引
                Create unique cluster index <索引名> on <表名><列名>
                Unique : 表示唯一
                Cluster :指 索引项的顺序与表中记录的物理顺序一样

三 . 数据库类型:
            1.开发库
            2.测试库
            3.生产环境库
            4.运营库


五 . 什么是存储过程?
        1.存储过程是一组予编译的SQL语句,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。
            优点 :
                  1.一次存储,多次调用;
                  2.执行一个存储过程要比执行一组sql语句要快;
                  3.减少网络流量,例如一个需要数百行的SQL代码的操作有一条执行语句完成,不需要在网络中发送数百行码
                  4.更好的安全机制,对于没有权限执行存储过程的用户,也可授权让他们执行存储过程.
        2.怎样调用存储过程?
                oracle:① int 参数 exec 过程名(入参数...)
                       ② begin 过程名(入参数...)
                mysql :创建,创建 MySQL 存储过程的简单语法为:create procedure 存储过程名字()([in|out|inout] 参数 datatype) begin MySQL 语句;end;
                       调用,call pr_add(10, null);
                       java代码中调用:connection.PrepareCall(call pr_add(10, null));

六 . 怎么优化数据库(在数据百万条记录的数据库中 Oracle)?
            使用索引
            建立分区,分区索引
            使用存储过程
            - * 创建索引
              * 复合索引
              * 索引不会包含有 null 值的列
              * 使用短索引
              * 减少 like 语句的使用(like “%qq%” 不会使用索引,like “qq%”会使用索引)
              * 不要在列 上进行计算
              * 不是有 NOT IN  和 < > 操作

七 . 如何优化SQL语句
            ①. 对操作符的优化 尽量不采用不利用索引的操作符
            如:in ,not in , is nul, is not null,<>等
            ②. 对条件字段的一些优化
             采用函数处理的字段不能利用索引,
             进行了显式或隐式的运算的字段不能进行索引
             条件内包括了多个本表的字段运算时不能进行索引
            ③. 在业务密集的SQL当中WHERE后面的条件顺序影响
            ④. 应用ORACLE的HINT(提示)处理
            ⑤. 查询表顺序的影响 
八 . 使用索引查询一定能提高查询的性能吗?为什么?
            不能。如果返回的行数目较大,使用全表扫描的性能较好。


九 . 如果数据库里边的大表添加字段怎么弄效率最高?(50%)
         alert table 表名 add 字段名
十 . mysql默认的最大连接数是多少?(40%)
        - 通常 MySql 最大连接数默认 是 100 , 最大可达到16384
        修改     
            通过命令修改,MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppassword
                设置新的最大连接数为200:mysql> set GLOBAL max_connections=200
            修改 MySql的配置文件,进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改为 max_connections=1000 服务里重起MYSQL即可

十一 . mysql内置引擎:
            1.innoDB
            2.myisAM
            3.memory
      关系型数据库有四个显著的特征,即安全性、完整性、并发性和监测性。

十二 .同一套代码怎样同时操作mysql和oracle?     hibernate数据库无关性好,或者定义变量,写一个接口,两个实现类

十三 .事务的隔离级别?
            Read uncommitted 读未提交 :一个事务读到了另一个事务未提交的数,即为脏读.
                   我们所说的脏读,两个并发的事务,事务A:领导给singo发工资”,“事务B:singo查询工资账户”,事务B读取了事务A尚未提交的数据。
               Read committed 读提交 : 可能会造成不可重复读. 大多数数据库的默认级别就是Read committed.
                     我们所说的不可重复读,两个并发的事务,“事务A:singo消费”、“事务B:singo的老婆网上转账”,事务A事先读取了数据,事务B紧接了更新了数据,并提交了事务,而事务A再次读取该数据时,数据已经发生了改变。
               Repeatable read 重复读 : 可能出现幻读。MySQL的默认隔离级别就是Repeatable read。
             Serializable 序列化 :
                        Serializable是最高的事务隔离级别,同时代价也花费最高,性能很低,一般很少使用,在该级别下,事务顺序执行,不仅可以避免脏读、不可重复读,还避免了幻像读。
            
十四 . Java中如何实现序列化,有什么意义?
            序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络            之间。序列化是为了解决对象流读写操作时可能引发的问题(如果不进行序列化可能会存在数据乱序的问题)。
            要实现序列化,需要让一个类实现Serializable接口,该接口是一个标识性接口,标注该类对象是可被序列化的,然后使用一个输出流来构造一个对象输出流并通过writeObject(Object)方法就可以将实现对象写出(即保存其状态);如果需要反序列化则可以用一个输入流建立对象输入流,然后通过readObject方法从流中读取对象。序列化除了能够实现对象的持久化之外,还能够用于对象的深度克隆。


    
























原创粉丝点击