zoukankan      html  css  js  c++  java
  • 数据库调试

    数据库调试

    • 数据库调试是在进行了成功的数据库测试之后才开始的工作。它与数据库测试不同,测试的目的是尽可能多地发现错误,而调试的目的是进一步诊断和改正数据库中的潜在错误。
    • 调试活动由两部分组成:
      • 确定数据库中可疑错误的性质和位置。
      • 对数据库的设计或编码进行修改,排除这个错误。

    数据库调试的原则

    • 因为调试活动由两部分组成,所以数据库的调试原则分成两组。
    • 确定错误的性质和位置的原则
      • 认真分析与错误征兆有关的信息。
      • 避开死胡同。
      • 只把调试工具当作辅助手段来使用。
      • 避免用试探法,最多只能把它当作最后手段。
    • 修改错误的原则
      • 在出现错误的地方,很可能还有别的错误。
      • 修改错误的一个常见失误就是只修改了错误的征兆或错误的表现,而没有修改错误的本质。
      • 当心修正一个错误的同时有可能会引入新的错误。
      • 修改错误的时候将迫使人们暂时回到数据库设计阶段。
      • 修改源代码,不要改变目标代码。

    数据库调试的步骤

    • 加载调试数据

      根据数据库需求分析的结果,确定一些常用事务(或是业务,或是某一具体处理),并且将它们所需要的数据(通常上百个元组)加载到数据库中。

    • 运行:运行数据库系统。

    • 评价

      • 检查是否获得预期结果。
      • 如果不能获得预期结果,则
    • 检查数据库系统模块、数据库存储过程和触发器的逻辑、SQL语句语法是否存在问题。若有,则修正后重新调试。

    • 若没有问题,则检查数据库模式(基本表、视图等的结构),分析加载的数据是否与数据库需求分析的要求相吻合,若不吻合,则修正后调试,直到能获得满意结果为止。

      • 若数据库模式描述不正确,就要返回到数据库逻辑设计阶段,进行逐级修正。
      • 若已加载数据不正确,就要对它们进行必要的修正,然后重新调试。
    • 如果获得预期结果,但是时间、空间不符合要求,则

      • 进行评价后处理:为节省时间,在空间允许的情况下,用合并、缩短存取路径的方法进行数据库逻辑结构的变通。为节省空间,在响应时间允许的情况下,进行数据“分离”,当然也是对数据库逻辑结构的变通。
      • 如果设计者对逻辑模型,无论如何“变通”都不能满足时间、空间的要求,那么这就说明系统选型不当,这意味着数据库需求分析与可行性论证工作开展得不充分。
      • 一旦遇到这种情况,只能做最坏的处理:将原来的应用分解成更小的应用,并且使这种小应用所涉及的关系、数据更少。这当然是一项复杂的工作,不仅要修改模式、子模式,并且还要修改应用程序,以此来弥补由于数据库需求分析与可行性论证不足所带来的缺陷。

    数据库调试的方法

    数据库调试的关键在于判断数据库系统内部的错误位置及原因。为此,可以采用以下方法:

    • 强行排错:这是目前使用较多,效率较低的调试方法。它不需要过多的思考,比较省事。例如:

      • 通过打印全部内存来排错。
      • 在模块特定部位设置打印语句来排错。
      • 利用SQL语言的调试功能或专门的交互式调试工具来排错。
    • 回溯法排错

      这是在小程序中常用的一种有效的排错方法。一旦发现了错误,人们先分析错误征兆,确定最先发现“症状”的位置。然后,人工沿程序的控制流程,逆向追踪源程序代码,直到找到错误根源或确定错误产生的范围。

    • 归纳法排错

      归纳法排错的基本思想是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误。归纳法排错步骤大致分为以下4步:

      • 收集有关的数据。
      • 组织数据。
      • 提出假设。
      • 证明假设。
    • 演绎法排错

      演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。演绎法主要有以下4个步骤:

      • 列举所有可能出错原因的假设。
      • 利用已有的测试数据,排除不正确的假设。
      • 改进余下的假设。
      • 证明余下的假设。
  • 相关阅读:
    PHP多表取数据的代码优化
    PHP json_encode中文乱码解决方法
    jQuery_Ajax_Json 异步接收PHP端传来的json数据
    metamask源码学习-controller-transaction
    metamask源码学习-contentscript.js
    metamask源码学习-background.js
    metamask源码学习导论
    metamask源码学习-metamask-controller.js
    metamask源码学习-inpage.js
    Guide to Porting MetaMask to a New Environment
  • 原文地址:https://www.cnblogs.com/vvlj/p/12750943.html
Copyright © 2011-2022 走看看