日历

2017年十二月
« 9月    
 123
45678910
11121314151617
18192021222324
25262728293031

最近评论

    MS应用

    数据库调优的方法有那些

    1.引言    
        数据库调优可以使数据库应用运行得更快,它需要综合考虑各种复杂的因素。将数据均 匀分布在磁盘上可以提高I/O 利用率,提高数据的读写性能;适当程度的非规范化可以改善 系统查询性能;建立索引和编写高效的SQL 语句能有效避免低性能操作;通过锁的调优解 决并发控制方面的性能问题。     数据库调优技术可以在不同的数据库系统中使用,它不必纠缠于复杂的公式和规则,然 而它需要对程序的应用、数据库管理系统、查询处理、并发控制、操作系统以及硬件有广泛 而深刻的理解。

     2.计算机硬件调优

    2.1 数据库对象的放置策略     利用数据库分区技术,均匀地把数据分布在系统的磁盘中,平衡I/O 访问,避免I/O 瓶 颈:    
        (1)访问分散到不同的磁盘,即使用户数据尽可能跨越多个设备,多个I/O 运转,避免 I/O 竞争,克服访问瓶颈;分别放置随机访问和连续访问数据。    
        (2)分离系统数据库I/O 和应用数据库I/O,把系统审计表和临时库表放在不忙的磁盘 上。    
        (3)把事务日志放在单独的磁盘上,减少磁盘I/O 开销,这还有利于在障碍后恢复,提 高了系统的安全性。    
        (4)把频繁访问的“活性”表放在不同的磁盘上;把频繁用的表、频繁做Join的表分别 放在单独的磁盘上,甚至把频繁访问的表的字段放在不同的磁盘上,把访问分散到不同的磁 盘上,避免I/O 争夺。

    linux/unix基础知识

    sql数据库面试题–网上搜的

      SQL数据库面试题
    1、SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值

    这种情况其实我们经常用到,比如我们新建了一个用户,建立完用户后我们希望马上得到这个新用户的ID,因为我们一般都是把这种用户ID的字段设置成自增长类型的,乍看起来好像没有要得到那个新ID很麻烦,其实sql server内置了一些全局的变量,使我们很容易就得到那个新的自增字段的ID,就是使用@@IDENTITY。

          在一条 INSERT、SELECT INTO 或大容量复制语句完成后,@@IDENTITY 中包含语句生成的最后一个标识值。如果语句未影响任何包含标识列的表,则 @@IDENTITY 返回 NULL。如果插入了多个行,生成了多个标识值,则 @@IDENTITY 将返回最后生成的标识值。如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操作,那么,在语句执行后立即调用 @@IDENTITY 将返回触发器生成的最后一个标识值。

    在具体应用中可以这样来写SQL语句:

    linux/unix基础知识

    sql经典面试题和答案-网上搜的

    1.一道SQL语句面试题,关于group by
    表内容:
    2005-05-09 胜
    2005-05-09 胜
    2005-05-09 负
    2005-05-09 负
    2005-05-10 胜
    2005-05-10 负
    2005-05-10 负

    如果要生成下列结果, 该如何写sql语句?

    linux/unix基础知识

    sql面试题–网上搜的

    d
    sname
    smoney
    sprovince

    1
    zhangsan
    2098
    A

    2
    lisi
    3000
    B

    3
    wangwu
    6789
    C

    4
    liumazi
    4587
    C

    5
    dongjiu
    3298
    B

    6
    shiga
    4567
    A

    id:合同id  sname:姓名     smoney :业绩     sprovince:地区
    第一道:显示出  业绩 大于同一地区平均值的 合同id  姓名 地区业绩
    第二道:把同一地区的  平均业绩 地区 插入到新表中 (新表只包含两个字段即:平均业绩 地区)

     请写出sql语句

    linux/unix基础知识

    数据库的查询题目--较难

    原文地址:http://www.javaeye.com/topic/194446
    设有学生选取修课程数据库:
    S(S#, SNAME, AGE, SEX, DEPARTMENT, ADDRESS, BIRTHPLACE)
    SC(S#, C#, GRADE)
    C(C#, CNAME, TEACHER)
    (1) 李老师所教的课程号、课程名称;
    SELECT  C#, CNAME;
    FROM  C;
    WHERE  TEACHER=”李”
    (2) 年龄大于23岁的女学生的学号和姓名;
    SELECT  S#, SNAME;
    FROM  S;
    WHERE  AGE>23  AND  SEX=”女”
    (3) “李小波”所选修的全部课程名称;
    SELECT  CNAME;
    FROM  S,  SC;
    WHERE  S.S#=SC.S#  AND  SNAME=’李小波’
    (4) 所有成绩都在80分以上的学生姓名及所在系;
    SELECT  SNAME, DEPARTMENT;
    FROM  S, SC;
    WHERE  S.S#=SC.S#  AND  SC.S# ;
    not  in ( SELECT  S#;
    FROM  SC;
    WHERE  GRADE<80 )
    (5) 没有选修“操作系统”课的学生的姓名;
    SELECT  SNAME ;
    FROM  S ;
    WHERE  S#  NOT  IN
    (SELECT  S# […]

    linux/unix基础知识

    SQL练习题—转载

    原文地址:http://gundumw100.javaeye.com/blog/618011
    题目1

    问题描述:
    为管理岗位业务培训信息,建立3个表:
    S (S#,SN,SD,SA)   S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
    C (C#,CN )        C#,CN       分别代表课程编号、课程名称
    SC ( S#,C#,G )    S#,C#,G     分别代表学号、所选修的课程编号、学习成绩
    要求实现如下5个处理:
      1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
      2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
      3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
      4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
      5. 查询选修了课程的学员人数
      6. 查询选修课程超过5门的学员学号和所属单位