美文网首页
2020-07-17SQL刷题笔记二

2020-07-17SQL刷题笔记二

作者: _笑口常开 | 来源:发表于2020-07-17 22:58 被阅读0次

    group by 用来分组数据, where 用来过滤数据

    数据库范式

    • 范式是什么

    范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。
    数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF。
    一般在我们设计关系型数据库的时候,最多考虑到BCNF就够。
    符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。

    • 范式的分类
    • 1NF:每个关系r的属性值为不可分的原子值,1NF是所有关系型数据库的最基本要求。
    • 2NF:满足1NF,非主属性完全函数依赖于候选键(左部不可约)
    • 3NF:满足2NF,消除非主属性对候选键的传递依赖
    • BCNF:满足3NF,消除每一属性对候选键的传递依赖

    数据库系统的特点:

    • 数据结构化
    • 数据的共享性高,冗余度低,易扩充
    • 数据独立性高
    • 数据由数据库管理系统DBMS统一管理和控制

    数据库管理系统DBMS 提供以下几方面的数据控制功能:

    • 数据的安全性保护(security)
    • 数据的完整性检查(integrity)
    • 数据库的并发访问控制(concurrency)
    • 数据库的故障恢复(recovery)

    本地管理表空间和字典管理表空间的特点

    1. 本地管理表空间:
    • 以位图的方式,将区的分配信息保存在数据文件本身,所有区的分配等操作都只是位图的运算,位图中的每一位对应数据文件中的一个区或几个连续的区。
    • 生成的重做日志将非常少
    • 运行的效率很高
    • 产生磁盘碎片很少
    • 如果要用本地管理表空间,可以在创建表空间时,使用: EXTENT MANAGEMENT LOCAL 选项。
    1. 字典管理表空间:
    • 将Oracle的区管理信息存放在表空间的字典中进行管理,所有区的分配与释放,都会使字典的记录的增减变动。
    • 在字典的记录中会执行更新、插入、删 除操作,在执行上述操作时,都会生成重做日志
    • 对字典的管理,将影响正常操作的效率
    • 在区分配、回收的过程中,产生磁盘碎片,如果磁盘碎片增加到一定 的程度,会浪费空间,严重影响效率
    • Oracle 在管理表空间的管理中,会产生递归SQL。
    • 如果要用字典的方式管理表空间,可以在创建表空间时,使用: EXTENT MANAGEMENT DICTIONARY 选项。

    显然,本地管理表空间这种方式更优。

    JDBC PreparedStatement 缺点及解决办法:

    • 缺点

    不能直接用它来执行in条件语句

    • 解决方案:
    • 分别进行单条查询——这样做性能很差,不推荐。
    • 使用存储过程——这取决于数据库的实现,不是所有数据库都支持。
    • 动态生成PreparedStatement——这是个好办法,但是不能享受PreparedStatement的缓存带来的好处了。
    • 在PreparedStatement查询中使用NULL值——如果你知道输入变量的最大个数的话,这是个不错的办法,扩展一下还可以支持无限参数。

    MYSQL 日志的分类

    • 错误日志:-log-err (记录启动,运行,停止mysql时出现的信息)
    • 二进制日志:-log-bin (记录所有更改数据的语句,还用于复制,恢复数据库用)
    • 查询日志:-log (记录建立的客户端连接和执行的语句)
    • 慢查询日志: -log-slow-queries (记录所有执行超过long_query_time秒的所有查询)
    • 更新日志: -log-update (二进制日志已经代替了老的更新日志,更新日志在MySQL 5.1中不再使用)

    MYSQL主从复制

    • 分类

    基于日志 bin-log
    基于全局事务标识符 GTID

    • 原理
    • master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫做二进制日志事件,binary log events)
    • slave将master的binary log events拷贝到它的中继日志(relay log)
    • slave重做中继日志中的事件,将改变反映它自己的数据(数据重演)

    相关文章

      网友评论

          本文标题:2020-07-17SQL刷题笔记二

          本文链接:https://www.haomeiwen.com/subject/ipkohktx.html