`
jiangduxi
  • 浏览: 458976 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

优化数据库对象

阅读更多
在数据库设计过程中,用户可能会经常会被一个问题缠绕:是否应该把所有表都按照第三范式来设计?表里面的字段到底该设置为多大长度合适?这些问题虽然小,但是如果设计不当则可能会给将来的应用带来很多的性能问题。

1. 优化表的数据类型
   表需要使用何种数据类型,是需要根据应用来判断的,虽然应用设计的时候需要考虑字段的长度留有一定的冗余,但是不赞成让很多字段都留有大量的冗余,这样既浪费磁盘存储空间,同时在应用程序操作时也浪费物理内存。

  在MySQL中,可以使用函数PROCEDUER ANALYSE()对当前应用的表进行分析,该函数可以对数据表中列的数据类型提出优化建议,用户可以根据实际情况酌情考虑是否进行优化。
引用

  SELECT * FROM table_name PROCEDUER ANALYSE();
  SELECT * FROM table_name PROCEDUER ANALYSE(16,256);

输出的每一列信息都会对数据表中的列的数据类型提出优化建议。以上第二句表示PROCEDUER ANALYSE()不要为那些包含的值大于16个或者256字节的ENUM类型提出建议。如果没有这样的限制,输出信息可能很长;ENUM定义通常很难阅读。

通过PROCEDUER ANALYSE()函数的输出信息,用户可能会发现,一些表中的字段可以修改为效率更高的数据类型。如果决定改变某个字段的类型,则需要使用ALTER TABLE语句。

2. 通过拆分提高表的访问效率
   这里所说的“拆分”,是指对数据表进行拆分。如果针对MyISAM类型的表进行,那么有两种拆分方法。
  2.1 第一种方法是垂直拆分,即把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。
引用

  如果一个表中某些列常用,而另外一些列不常用,则可以采用垂直拆分,另外垂直拆分可以使得数据行变小,一个数据页就能存放更多的数据,在查询时候就会减少I/O次数。其缺点是需要管理冗余列,查询所有数据需要联合(JOIN)操作。


  2.2 第二种方法是水平拆分,即根据一列或多列数据的值把数据列放到两个独立的表中。
引用

  水平拆分通常在以下几种情况下使用:
    a. 表很大,分割后可以降低在查询时需要读的数据和索引的页数,同时也降低了索引的层数,提高查询速度。
    b. 表中的数据本来就有独立性,例如,表中分别记录各个地区的数据或不同时期的数据,特别是有些数据常用,而另外一些不常用。
    c. 需要把数据存放到多个介质上。

   例如: 移动电话的账单表就可以分成两个或者多个表。最近3个月的账单数据存储在一个表中,3个月以前的历史账单存放在另外一个表中。超过1年的又可以存储在介质上。这种拆分是最常用使用的水平拆分方法。

  注意: 水平拆分会给应用增加复杂度,它通常在查询时需要多个表名,查询所有数据需要UNION操作。在许多数据库应用中,这种复杂性超过它带来的优点,因为只要索引关键字不大,则索引用于查询时,表中增加2至3倍的数据量,查询时也就增加读一个索引层的磁盘次数,所以拆分要考虑数据量的增长速度,根据实际情况决定是否需要对表进行水平拆分。


3. 使用中间表提高统计查询速度
  对于数据量较大的表,在其上进行统计查询通常效率很低,并且还要考虑统计查询是否会对在线的应用产生负面影响。通常在这种情况下,使用中间表可以提高统计查询的效率,
分享到:
评论

相关推荐

    oracle数据库整体优化方案全

    #### 七、优化数据库对象 除了上述提到的优化点之外,还需要关注数据库对象本身的优化: 1. **管理表的动态分配**: - 避免使用默认的自动扩展机制,而是预先分配足够的空间。 - 这样可以减少因动态空间管理带来...

    Oracle数据库性能优化

    本文将深入探讨Oracle数据库性能优化的策略与实践,涵盖数据库磁盘I/O优化、回滚段优化、Redo日志优化、系统全局区(SGA)调整以及数据库对象优化等关键领域。 #### 数据库磁盘I/O优化 磁盘I/O效率直接影响数据库...

    数据库实体对象转换JavaBean_数据库对象转Javabean_

    在Java开发中,数据库操作是不可或缺的一部分,而数据库对象与Java Bean之间的转换是数据层与业务层交互的关键。本文将详细讲解如何将数据库实体对象转换为Java Bean对象,以实现数据的有效封装和处理。 首先,我们...

    基于Greenplum Hadoop- 分布式平台的大数据解决方案11.定义数据库对象(1).zip

    在大数据处理领域,Greenplum和Hadoop是两个重要的分布式平台,它们各自有着独特的优势,并且可以协同工作,提供高效的...通过不断优化数据库对象和架构,我们可以更好地挖掘大数据的价值,为企业决策提供有力支持。

    设计高性能数据库[优化数据库结构]

    本文将详细介绍通过优化数据库结构来提高数据库性能的方法,包括分离用户数据库与系统数据库、创建数据库表分区(垂直分表和水平分表)以及合理部署数据库对象等策略。 #### 二、分离用户数据库与系统数据库 在...

    Oracle数据库分区优化技术研究与应用.pdf

    Oracle数据库分区优化技术可以应用于各种大型数据库对象管理和性能优化问题,例如大型数据库对象分解、索引优化、数据库查询优化等。该技术可以提高数据库性能、可用性和维护性,解决大型数据库对象管理和性能优化...

    oracle优化

    3. **对象创建和SQL语句执行**:优化数据库对象的设计和SQL查询语句,减少不必要的资源消耗。 #### 四、配置操作系统 尽管这通常不是数据库管理员(DBA)的主要职责,但在某些情况下,了解如何配置操作系统对于提高...

    对象数据库-第一次设计

    10. **最佳实践**:在实践中,了解并遵循一些最佳实践,如合理定义对象的层次结构、控制对象的复杂性、优化查询性能等,有助于构建高效、稳定的对象数据库系统。 对象数据库提供了一种不同于传统关系数据库的数据...

    数据库优化,代码优化数据库

    数据库是存储和管理数据的核心组件,优化数据库可以显著提高数据检索的速度,降低服务器负载。常见的数据库优化策略包括: 1. **索引优化**:为经常用于查询的字段创建索引,可以加快数据查找的速度。但是,过多的...

    第5章 其他数据库对象.ppt

    【第5章 其他数据库对象】 在Oracle数据库中,除了基本的表...理解和掌握这些对象的使用方法对于优化数据库性能至关重要。在实际应用中,根据业务需求和性能指标选择合适的数据库对象和配置,是提升数据库性能的关键。

    DB2数据服务器、数据库和数据库对象指南

    根据提供的文件信息,我们可以推断出这是一份关于DB2数据服务器、数据库及数据库对象的指南文档。尽管原文中包含了一些非文字字符和难以解析的内容,我们仍然可以从中提取一些关键信息并围绕这些信息展开讨论。 ###...

    面向对象数据库系统讲义

    面向对象数据库系统是一种先进的数据管理技术,它将传统的数据库系统与面向对象编程的概念相结合,以更好地处理复杂的数据结构和现实世界中的实体。本讲义旨在深入探讨这一主题,帮助学习者理解并掌握面向对象数据库...

    数据库及数据库对象.docx

    数据库是存储和组织数据的系统,它允许高效地管理和检索数据。在SQL Server 2008中,数据库分为两类:系统数据库和用户数据库。...这些知识对于理解和管理SQL Server数据库至关重要,有助于优化数据库性能和数据管理。

    数据库性能优化工具文档

    导航栏是整个工具的核心组成部分之一,提供了多个用于优化数据库性能的功能选项: - **数据库基本对象**:展示数据库中的基本结构元素,例如表、字段、索引和外键等。 - **性能优化**:包括数据库层面的优化操作,...

    数据库性能瓶颈优化实用脚本

    数据库性能优化是IT领域中的重要话题,特别是在大数据和高并发环境下,确保数据库高效运行至关重要。...在日常运维中,定期运行这些脚本,结合业务需求,持续优化数据库配置,是保持数据库高效运行的关键。

    ADO数据库对象模块.rar

    在“ADO数据库对象模块.rar”这个压缩包中,包含的是易语言编写的ADO数据库对象模块源码,这对于学习易语言以及了解ADO在数据库操作中的应用非常有帮助。 易语言是一种中国本土开发的、面向对象的、以中文作为程序...

    数据库模式对象与数据字典

    数据字典对于数据库管理员来说至关重要,因为它提供了数据库的元数据,帮助管理和优化数据库。Oracle数据库中的数据字典主要由一系列视图组成,这些视图提供了数据库的详细信息,例如`DBA_TABLES`、`USER_TAB_...

Global site tag (gtag.js) - Google Analytics