数据库操作优化

2024-09-13

数据库操作优化(精选7篇)

数据库操作优化 篇1

1. 前言

装置操作卡管理系统经过一年多的正式运行, 近期, 车间的用户普遍反映运行速度比较慢。用普通用户进行测试, 结果如下:从登录界面输入正确的用户名和密码后, 到显示出系统的主界面的时间间隔大约25~35秒;而操作卡查询后, 点击某个查询出来的操作卡, 到显示该操作卡的详细内容的时间间隔大约30~40秒。分析操作卡系统的数据量和用户的使用频率, 这样的运行速度确实很慢, 可以说给用户的操作带来了不便, 影响了工作效率。

2. 速度慢的原因分析

问题很普遍, 显然不是某台客户机的问题, 而且在配置较好的客户机上测试, 访问速度也很慢, 配置较低的客户机, 其访问速度就可想而知了。经过分析, 很可能与以下几个方面的原因有关:服务器的配置低;当前表中的数据量过大;数据库的参数配置不合理;这些都是系统运行速度的瓶颈。当然, 网络状况和病毒也是影响系统运行速度的原因, 需要一一排查。

3. 网络状况和病毒的排查

目前分公司的信息系统很多, 通过对照分析, 同操作卡系统情况类似的MES系统的运行速度在正常范围内, 这两个系统同在一个网段, 可以排除网络原因;系统服务器上的防病毒软件“赛门铁克”, 没有病毒隔离报警, 而且用各种病毒专杀工具进行杀毒, 没有查出病毒, 可以排出病毒原因。

4. 系统服务器的配置

操作卡系统的服务器配置如下:

服务器型号:DELL POWEREDGE 2850

CPU:3G双CPU

内存:3G

硬盘:5块146G的SCSI硬盘, 共700G, 做RAID5后, 剩余550G。

对于以上配置的服务器, 运行功能相对简单、数据交换量不大的操作卡系统, 还是绰绰有余的。

5. 当前表中的数据量过大影响系统运行速度

5.1 当前表的数据统计

操作卡系统用来存储数据的后台数据库是ORACLE数据库, 系统主界面打开时需要调用多个表中的记录, 其中有两个表中的数据量较大, 一个是OPER_DAILYOPERHEAD, 一个是OPER_DAILYOPERDETAIL。截止到6月底, 表OPER_DAILYOPERHEAD中的记录个数为86406条, 而表OPER_DAILYOPERDETAIL中的数据相对要多些, 达到2336979条记录, 导出的数据库文件大约有25G左右。对于oracle数据库来说, 表中的记录数量还没有达到影响系统运行速度的限额, 但是考虑到数据量还在不断的增加, 削除因当前表记录过多影响读取速度的因素, 决定把当前表中的大部分数据转移到历史备份表中, 以提高系统的运行速度。

5.2 历史数据转移

起初, 系统设计时没有考虑到历史数据转移功能, 随着当前表中的数据量逐渐增加, 如果不转移数据, 在进行数据查询的时候, 会越来越慢, 最终肯定会影响系统的运行速度。

可以根据实际情况选择数据转移的起始时间和截止时间, 为了避免转移的数据量过大而影响系统当前的运行速度, 以时间间隔半个月为宜。通过与生产处技术人员交流, 当前表中可以只保留2个月的最新数据, 其余的都作为历史数据转移到历史数据表中。对于用户来说, 数据转移后所有操作不受任何影响。

通过测试, 历史数据转移后, 系统的运行速度同预期效果一样, 虽然有所提升, 但不明显, 只是提高了几秒钟。同时也说明了, 目前表中的数据量还不是影响系统运行速度的关键因素。

6. oracle数据库优化

数据库的优化是改进Oracle数据库性能的有效的方法之一。

为了访问数据库中的数据, Oracle数据库为所有用户提供一组后台进程, 并且, 有一些存储结构专门用来存储最近的有关对数据库访问的数据。这些存储区域可以通过减少对数据库文件的I/O次数来改善数据库性能。数据库系统的执行效率较低时, 就要对Oracle数据库的参数进行调整, 以便提高Oracle数据库性能。

O r a c l e 9 i在安装时为每个数据库建立了一个P f i l e, P f i l e (Parameter File, 参数文件) 文件是基于文本格式的参数文件, 含有数据库的配置参数, 默认的名称为“init+例程名.ora”, 这是一个文本文件, 可以用任何文本编辑工具打开。

检查参数配置文件的内容发现, 以下参数设置不太合理, 并适当的进行了调整:

*.db_cache_size=25165824:数据缓冲区大小;改为1288490189。该值越大, 可以减少对数据库文件的I/O次数, 提高运行效率。

*.p g a_a g g r e g a t e_t a r g e t=2 5 1 6 5 8 2 4:P G A目标值;改为262144000。使用PGA_AGGREGATE_TARGET设置整个PGA大小, Oracle将为每个Session按照实际需要为其分配PGA, 并尽量维持PGA总量不超过PGA_AGGREGATE_TARGET值。

*.shared_pool_size=50331648:共享池大小;改为209715200。用于存储共享游标、存储的过程、控制结构和并行执行消息缓冲区等对象, 较大的值能改善多用户系统的性能。

*.sort_area_size=524288:排序区使用的最大内存量。改为1048576。排序完成后, 各行将返回, 并且内存将释放。增大该值可以提高大型排序的效率。

7. 创建ORACLE索引表

Oracle数据库中, 标准表和索引表的本职区别在于:索引表中的ROWID列存放的是主键信息, 是逻辑的物理地址;而在标准表的ROWID伪列中则存储的是真实的物理地址。

Oracle数据库索引表的优势主要体现在数据查询上, 而且, 这个优势是非常明显的。一是索引表能够获得比标准表更快的查询速度;二是索引表中的记录, 是按照主键列进行排序存储的;三是利用溢出存储功能, 提高常用列的访问速度。索引表减少了数据查询过程中的中间环节, 避免了额外的数据块读取操作, 可以获得更快的查询速度。

如果数据表的变更比较频繁的话, 则不适合采用索引表。这主要是因为Oracle数据库在对索引表管理时, 开销比较大。另一种方法是在基本表上建立索引, 这样虽然查询效果没有索引表那么好, 但是, 却可以大大减少Oracle数据库的开销。

建立索引要注意:一是在索引表中, 不能对非主键建立索引。这是索引表建立的一个限制条件, 数据库管理人员必须无条件的遵守。二是必须给索引表建立主键。有些数据库管理员有个习惯, 在建立表的时候, 一开始不设置主键。等到表维护的时候, 再确定某个字段作为主键。但是, 在索引表建立的时候, 一开始就要指定表的主键, 否则的话, 会有错误产生。这也是数据库管理人员需要注意的。

8. 测试

系统源程序及Oracle数据库参数优化后, 经过多用户多次测试, 反馈的结果是:

从登录界面输入正确的用户名和密码后, 到显示出系统的主界面的时间间隔大约5秒左右;而操作卡查询后, 点击某个查询出来的操作卡, 到显示该操作卡的详细内容的时间间隔大约10秒以内。

由此说明, oracle数据库的性能优化对提高操作卡系统的运行速度起到了关键作用。

9. 结语

为了保证Oracle数据库运行在最佳的性能状态下, 在信息系统开发之前就应该考虑数据库的优化策略。优化策略一般包括服务器操作系统参数调整、数据库参数调整、网络性能调整、应用程序SQL语句分析及设计等几个方面。但是数据库的性能优化调整是一个系统工程, 涉及的方面很多。在实际工作中, 还要根据用户反映的具体情况, 认真分析Oracle在运行过程当中出现的各种问题, 以保证Oracle数据库运行的高效率, 保证用户的正常使用。

摘要:本文介绍了装置操作卡管理系统的运行速度快慢与数据库优化的密切关系, 分析了系统运行速度慢的原因, 阐述了提升系统运行速度的解决办法, 介绍了oracle数据库的参数配置, 阐明了优化数据库是提升系统运行速度的关键所在。

关键词:操作卡,运行速度,数据库优化

参考文献

[1]北京华创操作卡系统安装与配置手册

[2]Oracle数据库系统管理.滕永昌.机械工业出版社

数据库操作优化 篇2

在数据操作系统中, 用户的计算请求在系统中转换为可调度的计算任务, 再通过相应的调度策略分配到可用的计算资源上[1]。同时, 由于计算任务的数据对象分散于各个结点, 数据的可用性以及节点的选择都需要通过调度策略进行判断。因此, 调度是数据操作系统中的关键问题。传统的调度研究关注点如公平性[2]、本地性[3]等在数据操作系统环境下仍适用。

系统的工作负载结构一直是调度策略制定的基本依据之一。随着数据计算环境的演化, 交互作业已经在工作负载中和传统批处理作业有了明确区分。本文引出了交互式作业在分布式处理框架调度问题中的目标与方法, 并提出了一种针对传统作业以及交互作业混合工作负载结构的双层优化调度模型。在该策略中, 双层结构分别针对作业级和用户级管理交互式作业, 管控其调度时间; 从而分别实现交互式作业针对传统批处理作业的优化以及各个用户之间的等待时间等级公平性。

本文各部分的组织如下: 在第2部分中介绍了数据操作系统环境下的作业调度背景。在第3部分中阐述了当前数据操作系统工作负载的结构趋势以及交互式作业的特点, 同时论证针对交互式作业调度优化的可行性。在第4部分本文提出了一种基于交互式作业优化的双层调度模型, 并详细列出其实现细节。在第5部分中, 对比传统的调度策略, 针对本文提出的调度策略进行评估。最后, 在第6部分进行总结。

2 数据操作系统中的作业调度背景

如同传统的系统研究理论体系, 调度问题仍然是是决定数据操作系统计算效率的关键问题之一[4]。通常情况下, 调度工作由系统内一个或多个调度器完成。数据操作系统环境下, 用户提交的请求被系统识别为用户作业, 并拆分为可调度的计算任务[5,6]。各调度器按照设定的调度策略将各个计算任务分配给可以支配的计算资源。常见的调度策略是例如: 先入先出 ( FIFO) 策略, 其调度的主要考量是作业提交时间, 提交时间较早的作业将更快地获得调度; 公平性策略[2] ( Fair Schedule) , 在多用户环境下以保证各个用户对资源的支配公平地调度策略。每一种调度策略的逻辑结构来源于一种或多种调度考量。

调度策略的设计和选择也与工作负载的自身性质紧密相关。在数据操作系统环境下, 工作负载中的作业有多种途径的来源和多样的计算要求。虽然在数据操作系统中, 各个不同性质的作业最终被分割为可以被统一调度, 相似度较高的调度任务; 然而, 由于数据操作系统用户对各种作业的侧重点不一而要求调度策略对各类作业加以区别。例如一种最经典的工作负载划分方式是将作业划分为单次处理作业与服务作业。针对工作负载自身结构的策略设计可以帮助系统提高用户满意度或者达到服务质量协议的相应指标。

3 交互式作业与当前的工作负载分析

海云协同网络环境下[7], 工作负载的结构正在持续发生变化。由于数据操作系统的一个直接使用场景是将用户的实时交互的数据操作请求转换为系统作业提交, 因此产生了一种特殊来源的作业: 交互式作业[8]。通常情况下, 用户在交互式操作请求提交之后会进行持续的等待, 所以这类交互式作业通常具有规模小、速度快和延迟敏感的特点。而传统的批处理作业是由用户提交的批处理计算请求产生的, 用户不会对批处理作业的结果进行持续等待, 而是采取定期查看批处理运行进度和结果的方式。因此批处理作业通常规模中等或者较大, 执行速度慢且对时间不敏感。

按照用户的使用场景推测, 在工作负载中, 交互作业通常集中在1到10个计算任务的规模, 而批处理作业则通常包含多于10个任务, 并均匀的分布于几个到数千个任务。同时, 较短的交互处理作业应该占据了所有作业数量上的多数, 但是主要的集群资源将被批处理作业占用。如果这种假设成立, 占据主要数量但是少量资源的交互作业就可以作为主要调度目标, 在不影响整体数据操作系统处理能力的基础上进行调度调整。

为了验证如上所述的假设, 本文分析了Facebook公司2010年内连续45天的工作负载记录, 共6. 5万条。在分析时, 本文首先将作业按照大小排序, 并以十个任务为递进单位将作业记录分为各个单元。图1中所示横坐标bin x代表了第x个单元。这个单元包含了工作负载记录中所有规模处于区间之内的作业。图中纵坐标代表了各个作业单元中作业数量占总作业数的百分比。可以明显地看出, 该分布符合重尾分布的定义[9], 除前两个单元有明显更多的作业之外 ( 共有超过70%作业) , 其余单元基本均匀分布少量作业, 直到第2800单元结束。数据表明, 在当前环境的工作负载中, 小规模的作业, 通常是交互型作业占据了数量上的多数, 成为在调度过程中不得不重点考虑的调度对象。

为了验证在数量上占据多数的交互作业对集群整体资源的占有情况, 本文进一步对同一工作负载记录进行了分析。与上一组试验采取了同样的划分单元的方式, 在这组试验中分析了在每一个作业单元内, 总任务数的分布情况。由于Hadoop框架对集群资源的基本调度单位是计算空位, 使用对应的任务数可以基本反映作业的资源占有情况。如图2中所示, 虽然从总体分布上各个单元对资源的占有比例并不完全均匀, 但是相对于图1中的作业数量分布, 其资源占有情况基本可以视为同样量级。数据显示占据数量上大多数的第一单元和第二单元作业对资源占有的比例与其余单元, 尤其是数量占据极少数的末尾单元所占据的资源属于同量级。由此验证了虽然交互作业在当前工作负载中占据了多数, 但是其总资源使用以及基本调度单位占用占总集群比例较小, 支持了可以在对总集群吞吐量影响可控的情况下优化交互作业的假设。

在现实工作负载的验证使针对这种工作负载的调度调整成为可能。虽然交互作业和批处理作业的性质不同导致其二者对用户满意度影响不同, 但其基本共性是交付时间长度与用户满意度负相关。各分布式处理框架现有的调度器虽然可以较好地解决本地性, 公平性等问题, 但是对交互作业并不能进行良好的区分, 因而导致交互式作业的延迟问题。这部分将会在本文的评估部分详述。由于以上原因, 本文提出一种兼顾交互作业与批处理作业共性和区别的调度策略。

4 一种数据操作系统的双层优化调度模型

由于在一般使用场景下, 用户持续等待交互式作业的提交结果, 因此相对于批处理作业, 交互作业的时长变化更容易导致用户对计算服务满意度的变化。同时, 针对多个用户共享集群资源的情况, 由于调度策略不同用户之间可能发生等待交互作业时间有较大差异的情况。由此可以引出本文调度策略的基本目标, 在保证传统调度考量的基础上使交互作业处理时间尽量小。虽然相对于交互作业, 批处理作业对执行时间延时相对不敏感, 但是执行时间也是用户对该类作业计算服务的重要衡量指标。因此交互任务不能简单无限抢夺或优先占有计算资源。尤其需要限制每个用户的交互作业优化和批处理作业损失的综合公平性。为此本文定义了作业等待级别 ( DoS) , 和综合和用户交互作业和批处理作业的用户等待级别 ( UDoS) , 两种指标作为算法的中间变量。其中前者可以用户表达归一化的单个作业用户等待级别情况, 后者表达了用户级别所有作业的等待级别变化情况。因此其调度目标与约束可以表达为

主体优化指标含义即尽量使交互作业获得更小的作业等待级别。其约束条件为在加速交互作业的同时, 各个用户综合等待级别应分布均匀, 即变异系数处于可接受状态。其中阈值30% 基本可以保证各用户在综合用户加速级别的分布处于均匀, 不会因为交互任务的加速使得批处理任务急剧减速也不会将加速的交互任务等级集中在少数几个用户中。以该经验值其作为基本约束指标。等待级别的计算公式 与相关变量如表1。

针对以上设定, 设计的总体调度框架如图3中所示。首先由一个用户服务管理模块 ( USM) 控制用户层级的交互作业影响。以独立队列 ( Queue) 代表各个用户的作业执行情况, 在一般情况下, 队列层级内普通公平调度器 ( FS) 仍发挥作用, 但在涉及交互作业的队列时, 交互作业控制机制 ( IC) 则会与公平调度器共同作用形成组合调度器。因此, 调度目标1将由USM模块在用户层控制实现, 调度目标2由各队列与调度器在作业层控制实现。

这种双层结构的框架有两个主要的优点: 一是具备较好的兼容性: 它可以与现有的调度器很好地结合。图3中公平调度器也可以替换为先入先出调度器或其他自定义调度器, 其具体的实现将在3. 1部分介绍。二是具备较好的可扩展性: 由于针对用户层级的管理以及针对作业级管理分开, 允许用户使用调度策略是分别调整相关参数以达到优化处理的目的。

4. 1 基于负载结构的作业层调度

在作业层的调度主要负责在工作负载中, 相对于批处理作业对交互作业实现调度优化, 从而达到从总体上降低用户等待交互作业时间的目的。该在作业层级该调度的主体结构与逻辑流程伪码如图4中左部所示。其中一个用户队列中包含一个用户的多个作业, 其中有交互型作业I与批处理作业B。对于每个交互型作业I, 针对其在队列中等待时间会导致作业等待级别 ( DoS) 的变化。队列与两个调度器相连接, 一个是普通的公平调度器FS, 另一个是由用户等待级别确定调度顺序的交互任务作业调度器 ( IC) 。作业层级的调度结果还会为用户层级调度产出用户等待级别 ( UDoS) 的变化依据。

作业层调度的主体流程如图4中伪码所示, 主要分为更新DoS参数与调度策略切换两个部分。在一个用户队列内, 待处理作业等待集群的调度通知。当一个调度通知到达时, 需要从队列中选出一个作业, 安排计算该作业中的一个任务。更新DoS发生在一次调度通知到达时, 从所有作业中计算并选出交互作业中DoS指标最高的作业, 将其信息存储在IC中。由IC内部定义的规则 ( 默认为大于固定阈值MD) 判断启用那个队列内调度策略。如果符合规则条件, 则直接传回IC内存储的作业信息。如果不符合, 则按照普通的公平调度器的调度方式来调度队列。

4. 2 面向公平性用户层调度

用户层调度的主要功能为选出UDoS指标最高的用户队列, 并且在本次对队列进行优先调度。这种调度逻辑保证了最终所有用户的UDoS级别是趋同的, 间接确保各个用户针对总体作业的等待等级不出现严重分化。其核心是用户等待级别管理部分 ( USM) 。当然, USM默认的策略也可以被替换成其他管理策略, 比如选取UDoS上升趋势最快的队列。只要最终的策略目标是让各队列UDoS的差距在可接受范围内, 即可符合整体调度目标。

如图5所示, 用户层及的调度流程比较直观。其主目标是当一个调度通知到达时, 从各个用户队列中选出合适的队列进行调度。队列内调度的过程按照3. 1中的流程进行。当调度通知到达时, 各个队列首先更新各自的UDoS值, 注意在UDoS处理过程中可以按照各个用户的SLA差异进行加权, 从而达到用户细分的目的。之后由USM按照指定策略选取出进行调度的队列。当然, 也可以关闭USM从而使用普通的公平调度器管理多用户队列。

5 实现与评估

本文中实验的基于DataOS v0. 1中的分布式数据处理应用程序Ha-doop, 实现上述的调度策略。实验的硬件平台基于一组8台服务器的集群, 每台服务器24核, 在Hadoop中被分配为16个Map计算空位和8个Reduce计算空位。用于处理的工作负载是针对真实Facebook中2010年工作负载集合进行的按比例抽样, 保证100个交互作业并按比例抽区批处理作业。保持了真实工作负载的交互作业与批处理作业的组成比例以及作业在各个规模上的基本分布。

本文先后使用普通公平调度器, 简单公平调度器以及本文提出的双层调度模型在真实机群上进行验证。普通公平调度器选取的是DataOS v0. 1中分布式处理框架自带的常见多用户调度器。简单公平调度器是在普通公平调度器之上屏蔽了本地性策略的版本。由于理想情况下的交互作业等待时间很难在实际机群中获得, 本文在试验中选用简单公平调度器作为对比基准。这样做的原因是, 仅考虑资源分配比例的简单公平调度器是公认合理的资源分配方式, 同时它的调度模式也相对稳定。本文希望评估本文提出的双层调度模型是否基于工作负载结构作业在其基础上获得显著优化, 是否实现设计的两个基本调度目标。另外与简单公平调度器对比在未优化的情况下, 于本文提出的调度策略的异同。

如本文第4节所述, 本文提出的调度策略有两个基本要求: 一是使交互作业等待等级尽量小。二是使所有用户的综合等待级别分布尽量均衡。试验结果如图6所示, 图6中横坐标代表是每个交互作业的序号。纵坐标代表的是相对于基准的简单公平调度器, 所选调度策略是针对交互作业取得加速。由图中可以看出, 实心点代表的普通公平调度均匀, 轻微地改变交互作业等待时间。而空心点代表的基于工作负载结构优化的双层调度模型显著加快了交互作业速度, 减少了用户的交互等待时间。虽然有部分作业也有超过普通公平调度的减速, 但是其总体交互作业平均加速达到87. 55%。同时, 少量用户调度的中间变量DoS值已经接近于0, 表明该算法针对工作负载结构的优化空间已经获得较为充分使用。图6的试验结果证明了优化调度机制要解决的原始问题已经解决, 同时说明了作业层的调度策略设计有效。图7中根据五个提交作业的用户, 对每个用户的交互作业等待情况进行了分析。首先由于在工作负载中交互作业获得的总体速度提升, 各用户的交互作业也体现出了较明显的趋势。说明此优化调度策略在整个工作负载上的交互任务发生作用。同时, 由于用户级调度策略的设计, 使得各用户的交互等待等级提升较为均匀。

表2中列举了两组实验的对比结果的一些指标, 从数据中看出, 对于设定的限制条件: 用户综合等待等级变异的系数, 优化双层调度策略在实验变中的异系数为27. 10%, 仍在设定的约束范围内。更为重要是, 集群吞吐率相对普通公平调度器和简单公平调度器并没有明显差异。再次印证了在当前常见的工作负载中, 针对交互作业的调度对整体集群处理效率影响较小这一前提假设。

6 结束语

本文阐述了当前数据操作系统环境下工作负载的变化趋势, 指出了工作负载结构优化的必要性和合理性。本文随即提出一种针双层优化调度模型, 并详细展示了其理论模型, 基本调度逻辑和实现步骤。通过在实际机群上模拟真实工作负载的形式进行试验验证, 证实了该调度模型能够显著地优化交互式作业的等待时间、能够有效平衡各用户间等待时间公平性并且该调度模型不会对整体集群吞吐量造成显著影响。

摘要:调度问题是数据操作系统研究中的关键性问题, 它建立了计算资源、计算任务以及数据间的链接关系。在海云协同网络环境下的调度问题中, 常见的调度考量包括公平性、数据本地性等。由于数据操作系统使用环境的演化, 工作负载中任务的交互特性给调度问题提出了新的挑战。本文在保留传统调度考量的基础上, 兼顾交互、批处理两种作业模式的异同, 提出一种优化的双层调度模型, 并使用符合实际产业环境分布的工作负载在现实集群上对该调度模型进行了验证。实验结果说明, 该模型以微量降低系统吞吐量的代价整体优化了交互作业的响应时间, 同时兼顾了用户级公平性。

关键词:任务调度,交互式作业,工作负载,数据操作系统

参考文献

[1]Mohammad Al-Fares, Alexander Loukissas, Amin Vahdat.A scalable, commodity data center network architecture.New York:Proceedings of the ACM SIGCOMM 2008 conference on Data communication, 2008, {38}:63

[2]Michael Isard, Vijayan Prabhakaran, Jon Currey等.Quincy:fair scheduling for distributed computing clusters.New York:Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles, 2009, {1}:261

[3]Ganesh Ananthanarayanan, Ali Ghodsi, Scott Shenker, Ion Stoica.Disk-locality in datacenter computing considered irrelevant.Portland, Proceedings of the 13th USENIX conference on Hot topics in operating systems, 2011, {1}:1

[4]Jian Tan, Xiaoqiao Meng, Li Zhang.Coupling task progress for mapreduce resource-aware scheduling.Turin:International Conference on Computer Communications, 2013, {1}:1618

[5]Luiz AndréBarroso, Urs Hlzle.The datacenter as a computer:An introduction to the design of warehouse-scale machines[M].USA:Morgan and Claypool Publishers, 2009.

[6]Rajkumar Buyyaa, Chee Shin Yeoa, Srikumar Venugopala等.Cloud computing and emerging IT platforms:Vision, hype, and reality for delivering computing as the 5th utility[J].Future Generation computer systems, 2009, 25 (6) :599

[7]黄哲学, 曹付元, 李俊杰等.面向大数据的海云数据系统关键技术研究[J].网络新媒体技术, 2012, 1 (6) :20

[8]Yanpei Chen, Sara Alspaugh, Randy Katz.Interactive analytical processing in big data systems:a cross-industry study of MapReduce workloads[J].Proceedings of the VLDB Endowment, 2012, 5 (12) :1802

数据库操作优化 篇3

Wonderware Historian (以下简称Historian) 原称In SQL, Historian是世界上第一个适用于工厂数据的高性能实时关系数据库。它把关系型数据库的强大功能及灵活性和实时系统的速度及压缩功能相结合, 使办公室和车间紧密地联系起来, Historian内嵌了SQL Server, 可提供广泛的数据访问、一个强大的关系型机制以及同Microsoft Back Office TM的紧密集成。Historian全方位地获取和储存工厂数据, 并将实时和历史工厂数据与配置、事件、概貌和生产数据集成起来。通过大量的客户端应用程序, 可以访问工厂的全部信息, 从而在竞争激烈的工业软件领域中, 确立了它在开放性和灵活性方面无人可敌的地位。Historian服务器是Microsoft SQL服务器的延伸, 并将后者的开放性、连接、灵活性和效力增加到最大限度。

2 Historian数据库基本操作

2.1 连接数据库

笔者将在Microsoft Visual Studio 2010开发环境上, 使用C#语言对Historian数据库进行操作。在操作任何数据库之前, 都需要先连接到数据库, 然而, Historian数据库的连接与我们常用的Access、My Sql、Sql Server、Oracle等数据库有很大的区别, 它所创建的连接并不是实际的物理连接。比如, 如果当前的Historian数据库服务器并不可用, 它会先在本地的电脑上创建和存入数据流。

连接Historian数据库的具体步骤如下:首先, 需要创建一个Historian Access的连接代理对象;然后, 创建一个Historian Connection Args对象, 用于存放连接数据库的属性;最后, 由于Open Connection方法返回的只是数据库的连接请求是否成功, 并不会直接返回数据库连接是否成功, 所以需要创建一个Historian Connection Status, 它是一个Historian数据库连接的返回状态对象, 通过这个返回状态来判断是否成功连接上Historian数据库。需要注意的是, 在判断是否成功连接上数据库时, 需要不断的获取数据库的连接状态, 当数据库的连接状态不是Pending时, 这时候才能通过连接状态来判断是否成功连接数据库, 只有当连接状态的Connected To Server、Connected To Server Storage和Connected To Store Forward这3个属性都为True时, 才算完完全全的成功连接到数据库, 才能操作Historian数据库。

2.2 增加数据

Historian数据库的增加数据与我们常使用的数据库有很大的区别, 它不是先找到要操作的表及表中字段, 而是直接操作Tag。在增加数据之前, 首先查询数据库中是否已经存在该Tag, 如果不存在, 则必须创建一个Tag, 然后才能把数据存入该Tag中。

2.3 删除数据

Historian数据库的删除数据是直接删除Tag。首先需要创建一个Historian Tag Status List对象, 然后把需要删除的Tag添加到Historian Tag Status List列表中, 最后使用Delete Tags方法。

2.4 修改数据

Historian数据库的数据修改也与我们经常使用的数据库有很大的区别, 它的数据修改是首先创建一个与原来名称一样的Tag, 然后把Tag的数据类型、数据质量、数据等信息赋为要修改的数据, 最后使用Add Tag () 方法。

3 结语

由于Wonderware Historian数据库与我们传统的一些关系型数据库 (比如:Access、My Sql、Sql Server、Oracle) 的操作有很大的区别, 所以我们不能把操作传统数据库的思想用于该数据库。虽然Historian数据库现在基本上都是用于工业上, 但是由于其拥有的高度的可扩展性、灵活性、实时性等优点, 不管哪个行业, Historian都能提供当今最严苛的公司所需的数据支撑。相信在不久的将来, 它将会出现的不同的行业、领域中。

参考文献

[1]张伟锋, 邓世荣.Proficy Historian在水处理系统的应用[J].南钢科技与管理, 2011 (2) .

[2]喻洋, 叶玉堂, 邢同举.SQL数据库操作中的常用C#语句[J].软件导刊, 2011 (11) .

[3]梁立新.项目实践精解:C#核心技术应用开发[M].北京:电子工业出版社, 2009.

数据库操作优化 篇4

1 查询的理解

查询是对数据的重新组织,查询中保存的是查询方式,在查询的表视图中看到的是查询的运行结果,当关闭查询,这个运行就消失了,再次运行查询,重新从表中提取数据,显示查询结果,所以说查询的结果是一个动态的数据集。查询类型包括选择查询、参数查询、交叉表查询、操作查询和SQL查询。

2 操作查询

选择查询、参数查询和交叉表查询都是从表或查询中检索符合条件的记录,而不改变表

中原有数据。操作查询用来编辑表中数据,不仅可以生成新表,而且还可以批量删除、追加、更新表中记录。操作查询包括生成表查询、追加查询、删除查询和更新查询。运行操作查询可以批量修改表中数据,为了避免操作失误,需要备份数据库中的数据。操作查询的图标中包含一个感叹号,以引起用户注意。操作查询的结果是不能直接看到的,必须打开表对象才能看到。该文以Access2007版为基础,来探讨一下操作查询的使用。

以“教学管理数据”库(如图1所示)为例。

2.1 生成表查询

在Access中,从表中访问数据要比从查询中访问数据快得多,如果经常要从几个表中提取数据,最好的方法是使用Access提供的生成表查询,即从多个表中提取数据组合起来生成一个新表永久保存。

例:利用“学生”、“课程”和“成绩”表生成一个新表,表名为“男生信息”。新表仅包含1990年出生的女生记录,字段包括“学号”、“姓名”、“性别”、“课名”和“分数”。该题可以通过一个生成表查询来完成。

通过查询设计器完成如下(如图2所示):

打开查询设计器,单击生成表查询,出现“生成表”对话框,生成的新表的名称为“男生信息”。相应的Select语句为:

SELECT学生.学号,姓名,性别,课名,分数INTO女生记录

FROM学生INNER JOIN(课程INNER JOIN成绩ON课程.课号=成绩.课号)ON学生.学号=成绩.学号WHERE学生.性别="女"AND Year([出生日期])=1990

在该Select语句中对于生成表查询关键的是INTO子句。

2.2 删除查询

对于一些无用的数据应及时从数据库中删除。删除查询可以从单个表中删除记录,也可以从多个相互关联的表中删除记录。如果要从多个表中删除相关记录必须满足以下条件:

(1)在“关系”窗口中定义相关表之间的关系。

(2)在“关系”对话框中选中“实施参照完整性”复选框。

(3)在“关系”对话框中选中“级联删除相关记录”复选框。

例:复制“课程”表的副本为“课程信息”,“成绩”表的副本为“成绩信息”,删除“课程信息”中“选修”课程,同时删除“成绩信息”表中的相关记录。

通过查询设计器完成如下(如图3所示):

打开查询设计器,单击删除查询,在该窗口中关键的是多出了“删除”这一行。要先双击一下“*”,代表所有字段,因为删除查询删除的是整个记录,而不是记录中的某些字段。

相应的Select语句为:

DELETE*FROM课程信息WHERE课程信息.类别="选修"

在该语句中DELETE就是删除指定表中符合条件的记录,功能相当于删除查询。

2.3 更新查询

在建立和维护数据库的过程中,常常需要对表中的记录进行更新和修改。如果用户通过“数据表”视图来更新表中记录,那么当更新的记录很多,或更新的记录符合一定条件,最简单、有效的方法是利用Access提供的更新查询。

如果创建了表间关系,并选中“级联更新相关字段”复选框,更新主表的主键字段,同时更新子表的外键字段。

例:复制“教师”表为“教师信息”表,将“教师信息”表中“编号”字段内容的尾部再增加一位数字“5”。在定义该表时,“编号”字段为字符型。

通过查询设计器完成如下(如图4所示):

打开查询设计器,单击更新查询,在该窗口中关键的是多出了“更新到”这一行。

相应的Select语句为:

UPDATE教师信息SET教师信息.编号=[编号]+"5"

在该语句中UPDATE就是指更新指定表中符合条件记录的字段内容,相当于更新查询。

2.4 追加查询

维护数据库时,常常需要将某个表中符合一定条件的记录添加到另一个表上。Access提供的追加查询能够很容易地实现一组记录的添加。

例:有一空表“优秀”表,包括“学号”、“姓名”、“课名”和“分数”字段,将“学生”、“课程”和“成绩”表中90分以上的记录追加到“优秀”表中。

通过查询设计器完成如下(如图5所示):

打开查询设计器,单击追加查询,出现“追加”对话框,选择“优秀”表。在追加查询的设计器中与其它查询相比,多出了“追加到”这一行。

相应的Select语句为:

INSERT INTO优秀(学号,姓名,课名,分数)

SELECT学生.学号,学生.姓名,课程.课名,成绩.分数

FROM学生INNER JOIN(课程INNER JOIN成绩ON课程.课号=成绩.课号)ON学生.学号=成绩.学号WHERE成绩.分数

在该语句中,INSERT就是在指定表的尾部插入一个新记录,功能相当于追加查询。

3 结束语

该文通过具体的实例,以Access2007为基础,探讨了Access数据库中操作查询的使用,通过查询设计器和相应的SELECT语句来实现操作查询。对操作查询过程中需要注意的事项进行了分析和总结,把容易混淆的知识点进行了对比,对操作查询的学习能够起到事半功倍的效果。

参考文献

[1]教育部考试中心.全国计算机等级考试二级教程——Access数据库程序设计[M].北京:高等教育出版社,2004.

[2]申石磊,季超,楚艳萍.Access程序设计[M].合肥:中国科学技术出版社,2009.

[3]叶建良.Access的总计查询及其解题浅析[J].电脑知识与技术,2009(3).

[4]楚艳萍,程普.Access交叉表查询研究[J].福建电脑,2010(9).

数据库操作优化 篇5

有这样一句话最为经典、贴切的描述了Delphi——“真正的程序员用C, 聪明的程序员用Delphi”。它将可视化编程 (Visual Programming) 与面向对象 (Object-Oriented) 的优点结合在PASCAL语言开发平台上, 功能强大、简便易用。

二、delphi的数据库方法

Delphi中处理数据库主要有三种方法:BDE、ADO, db Express方法。

1、ADO接口

从Delphi 5.0开始, 加入了ADO技术的模块, 并逐步成为Delphi数据库设计的主流。它的吸收了BDE的特点, 做到和原来的程序兼容, 同时, 它又可以接受标准ADO技术的各种属性和方法, 提高了执行效率, 给设计人员以更多的选择。

2、BDE接口

BDE (Borland Databas Engine) , 一直是Delphi处理数据库的事实上的标准。它是一个基于驱动程序的体系结构, 每一种数据格式或数据源都有一种驱动程序来驱动相近的数据源。BDE可以很好的支持现在最流行的ODBC-API方法。

3、db Express方法

db Express是Delphi 6.0加入的最新的数据库模块, 它不使用缓存, 可以快速浏览大量的数据, 它一个重要的特点是交叉平台, 可以和Linux数据库连接, 速度相当快。

二、delphi的数据库组件

Delphi部件板上有两页数据库部件用于开发数据库应用程序:TTable、TQuery、TStoredproc部件负责与实际的数据库表联系, 并从中获取数据信息, 因而它们又常常被称为数据集部件, 它们通过BDE为应用程序提供与数据库的连接, 数据控制部件通过TData Source部件与数据集部件相连, 为用户提供一个可视化的界面。

数据访问部件页:数据访问组件在组件面板的Data Access组件页上, Table、Query和Storedproc三个组件也称为数据集组件, 用于和数据库连接, 可将这些组件视为数据库, 对它们的操作就可认为是对数据库的操作。

数据控制部件页:数据控制组件也可称为数据显示组件或数据浏览组件。它们的主要功能是和数据访问组件配合供用户对数据进行浏览、编辑等操作。数据控制组件在组件板上的Data Control页上, 共有15个组件。

1、数据访问组件

(1) Data Source控件是数据集组件和数据控制组件的连接媒介。只有通过Data Source控件才能和数据集组件连接, 从而对数据进行操作。 (2) Session控件是用于控制数据库应用程序和数据库连接的, 用于复杂功能的实现。 (3) Data Base控件一般用于建立远程的数据库服务器的数据库应用程序和数据库之间的连接。 (4) Query控件是利用SQL通过BDE来操作数据库的, 采用SQL来实现。 (5) Storedproc控件是通过BDE对服务器数据库进行操作的, 常用于客户/服务器 (C/S) 结构的数据库应用程序。 (6) Table控件是通过数据库引擎——BDE来存取数据库中的数据的。通过BDE将用户对数据库的操作传递给数据库。

2、数据访问组件

数据控制组件也可以称为数据显示组件或数据浏览组件。它们的主要功能是与数据访问组件相配合, 提供给用户一个对数据进行浏览、编辑等操作的界面。数据控制组件在组件板上的Data Control页上。它们主要有:DBGrid控件、DBEdit控件、DBMemo控件、DBImage控件、DBText控件、DBListbox控件、DBNavigator控件、DBCheck Box控件、DBLookup Combo Box控件、DBRich Edit控件、DBCtrl Grid控件、DBCombo Box控件、DBRadio Group控件、DBLookup List Box控件、DBChart控件等。还有一个组件页是ADO (Active X Data Objects) , 主要是使用微软的OLE DB功能对数据库服务器中的数据进行访问和操作。易于使用、高速度、低内存支付和存储空间占用较少。

三、数据访问部件层次结构

TDatasource部件是连接数据集部件和数据浏览部件的桥梁, 它在数据访问部件页上。

TSession是全局性的部件, 在应用程序运行时, 它自动地建立, 在设计阶段和运行过程中它是一个不可见的部件。

TFields部件对应于数据库表中的实际字段, 它既可以在应用程序的运行过程中动态地生成也可以在程序设计阶段用字段编辑器创建。

TDataset部件是不可见的, TTable和TQuery部件是由它派生而来的, 这两个部件一般被称为数据集部件, 它们在数据访问部件页上。

TDatabase部件是为开发客户/服务器数据库应用程序时, 设置登录的数据库的有关参数的, 它在数据访问部件页上。

四、有关delphi数据库操作

其实与其它的delphi编程一样, delphi的数据库操作也是对这些组件的方法和属性的灵活应用。比如Ttable这个组件, 提供了下列方法供用户使用:Set Range Start和Edit Range Start方法;Set Range End和Edit Range End方法;Set Range ([Start Values], [End Values]) 方法;Apply Range方法;Cancel Range方法等等。为了灵活掌握这些方法, 关键还是要多加联系, 明白他们能够实现的功能, 通过将性能与效率结合起来选择合适的组件完成功能, 就是delphi数据库开发的关键点。

参考文献

[1]Marco Cantu著, 王辉、张晓辉译:《Delphi6从入门到精通》, 电子工业出版社, 2008年。

数据库操作优化 篇6

关键词:ASP,ADO,OLE-DB,ODBC,数据库连接

1 引言

Personal Web Server(PWS)可以让个人计算机变成一台Web服务器,它完全支持ASP设计,可以作为设计ASP的操作平台。它还可以将Web应用程序移植到Windows NT或Windows 2000的IIS上运行。

所以要进行网页数据库的ASP设计首先要安装PWS,PWS安装文件一般在Windows 98光盘的Add.ons目录下(在Windows NT 4.0 Option Pack光盘里也可以找到)。当我们安装PWS时,我们要注意选择安装ASP子组件,否则Web服务器将不支持ASP的功能。另外还要注意选择适当的网站服务器的发行主目录,这里我们选择C:Inetpubwwwroot作为发行主目录。只有设置了发行主目录,当别的客户机联机到该服务器时,就会看到这个目录下的网页。

安装完PWS,我们下一步就是检测PWS4.0是否能正常工作,我们可以在浏览器中输入网址“127.0.0.1”,这时如果安装成功的话会出现PWS 4.0的默认主页。“127.0.0.1”是提供给没有连上网络的单机用户测试的IP地址,如果你的计算机已经连上了网络也可以输入自己计算机的IP地址来测试PWS是否已经运行。

2 用Access2000制作数据库网页

在使用数据库之前,我们通常需要先创建和配置ODBC数据源。只要所用的数据库软件提供了ODBC的驱动程序,应用程序就可以通过ODBC驱动程序来存取这些支持ODBC的数据库。配置ODBC数据源可打开控制面板中“ODBC数据源”控制选项。这时会打开“ODBC数据源管理器”,我们打开系统DSN选项卡,添加你所要数据库的ODBC驱动程序,这里我们选择Microsoft Access Driver(*.mdb)驱动程序。接下来设置ODBC Microsoft Access的安装,我们选取要使用的数据库,这里我们选取C:MY Documents下的visit.mdb数据库文件。

生成的ASP网页需要测试,我们用Frontpage 2000测试生成的ASP网页,由于ASP网页必须在PWS4.0上才能运行,所以要再此添加网站以便放置该ASP网页,我们在Frontpage2000中新建一站点,站点会保存在上面安装PWS时所设置的Web发行主目录下,即C:Inetpubwwwroot下。我们在新网站中创建一新的目录名为ASP,然后把刚刚建立的ASP网页导入刚刚建立的ASP目录中,最后我们在浏览器中打开ASP目录中的数据库网页,可以看到前面所建立的数据库,应该是正常的。

如果在浏览器中出现“禁止执行访问”的警告,那么问题通常出在ASP文件夹属性上,我们可设置ASP文件夹属性为“允许运行脚本”则可解决问题。

3 利用Frontpage 2000制作数据库网页

使用Frontpage 2000也可以制作数据库网页,且可以动态显示数据库的属性。具体过程如下:

可以在Frontpage 2000中插入前面的AccessASP网站,我们在新的网页中添加前面所制作好的数库。

我们可以利用Frontpage 2000里的数据库结果向导进行数据库与网页的连接,点击数据库结果向导中“创建”按钮,这时会弹出“站点设置’对话框,通过对话框中的数据库选项卡进行新建数据库连接。

最后在站点服务器上的数据源中选择前面设置好ODBC的visit数据库,则完成设置。并设置数据原名为dbvisit。以便后来调用此数据库。

ASP对象分类

ASP对象可以分为内置组件和外挂组件。

Application对象示可以让所有用户共同使用的对象,即公用变量[1]。它包含两个事件程序:Application_OnStart和Application_OnEnd。Application_OnStart在PWS激活后第一个用户使用系统时,会激活这个程序,而Application_OnEnd在PWS关闭时激活这个事件程序。

Session对象与Application对象恰恰相反,它仅适用于单一的用户。也有两个事件程序:Session_OnStart和Session_OnEnd。

Response对象可将要表现的信息直接写在网页上,如Response.Write“目前在线的人数:”&User即会在网页上显示:目前在线人数:…

Request对象通常是为了取得用户所输入的信息,制作出一个可供用户输入信息的交互式网页时,利用Request对象就可以很方便的取的用户所输入的信息。

Server对象与ADO对象搭配可以与数据库链接

4 安全隐患及防范

由于ASP和ACCESS本身的客观因素存在一些隐患,所以我们可以采取下列措施进行一些防范。

4.1 使用不规则的文件名

B/S结构特点决定用户只要有一个浏览器就可访问,只要输入url地址,就可找到相关的页面,数据库也同样,这样非法者可能会猜到数据库名进行非法活动,防范方法有:可以定义不规则的数据库名,也可以将数据库深深地埋在许多不规则的文件夹里。

4.2 使用ODBC数据源

在ASP程序设计中,应尽量使用ODBC数据源,不要把数据库名直接写在程序中,否则,数据库名将随ASP源代码的失密而一同失密。例如:

DBPath=Server.MapPath(“../bbs/data/news.mdb”)

Conn.Open“driver={Microsoft Access Driver(*.mdb)};dbq=”&DBPath

这样,即使数据库名字起得再怪异,隐藏的目录再深,ASP源代码失密后,数据库也很容易被下载下来。如果使用ODBC数据源,就不会存在这样的问题了:Conn.open“ODBC-DSN名”。

4.3 良好的身份验证系统

设计要求用户注册成功后系统启动Index.asp页面。如果不采用Session对象进行注册验证。利用Session对象可以有效阻止这一情况的发生。

5 总结

随着Internet的兴起和以网页为载体的网络信息的广泛传播,网页制作中对于内容的动态显示与更新需求量越来越大。在众多的编写环境中,Microsoft Active Server Pages(ASP)以其强大的技术力量背景及容易掌握的语言环境迅速获得了众多网页设计人员的青睐。这里就是利用ASP与网页数据库的相关技术制作跟踪用户访问信息的网页数据库。

参考文献

[1]数位文化.网页数据库实例应用宝典[M].北京:清华大学出版社,2001.

[2]苏朋.ASP编程技巧与实例分析[M].北京:中国水利水电出版社,2001.

适时动手操作优化数学课堂 篇7

这时, 动手操作便充分显示出它的优点, 它无时无处不充斥着我们的课堂, 于是, 我们又走进了另一个误区, 认为它是万能的。热热闹闹的课堂, 流于形式的讨论, 让我们深感无奈。那究竟何时让学生动手操作才合理呢?

一、建立概念时

数学概念是现实生活中数量关系在人脑中的反映, 是学好数学基础知识的重要保证。但是, 由于它经过了高度抽象的概括, 变得晦涩难懂, 与小学生的认知水平存在较大的差距。所以, 我们可以在教学中利用动手操作来建立数学概念, 让其变得浅显易懂。

例如, 在教学体积的概念时, 学生对“所占空间大小”难以想象和理解, 教师在充分估计学生思维特征的基础上, 分小组进行操作, 每个小组发两个大小不同的物体 (完全可以浸没于水中) , 然后往两只杯子里倒水到一定刻度, 学生观察两只杯子里水的上升情况, 当杯子里水的高度完全相同时, 学生把其中小一些的物体沉入第一只烧杯的水中, 学生观察、讨论, 为什么杯子里的水面升高了, 接着让学生把另一个大一些的物体放入第二只烧杯中, 学生观察、讨论, 第二杯的水面为什么会超过第一杯的水平面。通过以上操作和讨论, 学生已经有了初步的感性认识, 物体不仅要占据空间, 而且所占的空间还有大小之别, 到此时再出示课本结语, 体积的概念便水到渠成了。这样把一个十分抽象的数学概念变为学生自己可感受的形式呈现出来, 然后再内化为自己的认识, 从而掌握数学知识。

再如:教学《圆的认识》时, 就可以通过折一折的方法来学习直径、半径、圆心等概念。先将圆对折, 打开, 再对折, 再打开, 如此多次反复, 再加上教师的适时引导, 学生就会知道, 每条折痕都相交于一点, 这个点就是圆心, 折痕就是直径, 一个圆有无数条直径, 所有的直径长度相等, 是半径的2倍等等。这样在动手操作的过程中, 许多抽象的概念不知不觉中学生就理解了。

二、探索新知时

数学课堂是学生开展思维活动的地方, 思维始于动作, 动手操作可以使学生获得感性知识, 为思维提供依托, 帮助探索新知。如果教师引导恰当, 学生就会时不时冒出闪亮的火花, 这就培养了学生的创新能力。所以, 教师要努力创造条件, 深入挖掘教材, 设置问题, 让学生在动手操作的过程中, 有展开想象翅膀的机会。

例如:在教学梯形面积公式的推导时, 我首先质疑如何计算一个梯形的面积, 并让其思考应该将梯形如何转化, 接着就鼓励学生动手剪、拼、补、移, 充分调动积极性。学生边思考, 边操作, 得出了求面积的多种方法, 例如将梯形分割成一个三角形和一个平行四边形, 或者分割成两个三角形, 还可以通过先分割再旋转的方法将梯形转化成一个大三角形或者平行四边形, 当然还有公式中的方法, 这样一个再创造的过程, 使学生不再受教材、教师的限制, 不仅加深了对公式的理解, 更重要的是促进了学生创新思维的发展。

三、理解算理时

计算是小学数学的一个重要组成部分, 是学习的基础。小学生的思维特点是具体、形象思维占优势, 所以在很大程度上都是依靠动作思维来获取知识。动手操作可以让学生形成数量变化的表象, 把亲眼看到的东西经过大脑分析、判断、深化, 有利于尽快理解算理, 掌握计算方法。

例如, 在教学9加几的时候, 学生很难理解其中的算理, 那就需要学生亲自动手摆一摆。先让学生摆9根小棒, 另外再摆3根, 问:一共有几根呢?这时学生会有很多想法, 有的拿着小棒数, 有的将3根中的1根放到9根中, 凑满了10……在多种算法同时存在的情况下, 学生能清楚地认识到想要知道一共有多少根小棒, 将9凑成10是最简便的方法, 在摆一摆、移一移的过程中领会了9加3的算理, 知道了“凑十法”在计算中的运用, 外部的操作顺利地转化为内部的思维活动。

四、自我感悟时

学生是学习的主人, 是自己思想的主宰。有些时候, 哪怕教师讲得再细再透, 可能有些学生还是不能理解, 这就需要学生通过自主学习, 自我感悟来寻找答案, 这才是真正意义上的理解。我们要充分相信学生的能力, 相信他们有分析、解决问题的能力, 变“授鱼”为“授渔”, 让学生有思考、想象的机会, 培养其悟性。

例如, 在教学“把两个完全一样的正方体拼成一个长方体”时, 要让学生求长方体的表面积。有的学生想象不出在这一变化过程中, 面是怎样变化的, 那就让学生自己准备两个完全一样的正方体, 在拼一拼中一眼就明白了, 长方体的表面积和两个正方体比较, 少了两个正方体的面, 于是就能很容易找到解决问题的方法。这样, 在思考中动手, 在动手中思考, 达到牢固掌握和运用数学知识的目的。

上一篇:教研教改下一篇:职业生涯高原