`

SQL Server对上亿表的排序和join的问题解决

阅读更多

对上亿的表进行排序或者上亿的表之间进行join,会导致系统失去响应。

 

◆1.我确实做了一个很大的查询,涉及的数据表有两亿条记录,而且有一个group by操作,造成CPU、内存和磁盘开销均很大。后来和微软的人重新实验了一下,我的查询确实会造成系统反应变慢。后来我们也实验了一下,在这个2亿的表上统计一下行数,即select count(*) from table1,用了1分钟,内存涨了5G左右,磁盘子系统负荷很大,CPU也突然提高。这说明这种上亿的表的操作会非常严重的降低效率。

◆2.整个服务器的磁盘分配是这样的,网站访问的数据库库位于磁盘阵列中,而我们的统计临时库位于D盘中,C和D好像是一个磁盘组,也就相当于是在C盘。我们的数据库的大量磁盘I/O会导致系统的反应变慢。因此当我的查询很大的时候,就会使服务器整个系统变慢。

◆3.数据库的数据文件的自增长方式为每次1024k,数据文件的空间已经接近用光,而要发生增长,而增长空间要求应该比较大,所以就会不停的申请增长,造成磁盘开销较大。

◆4.操作中涉及到delete操作,会形成大量的日志,而上周扩容后,发现日志文件比以前缩小了,估计是重建了,昨天的操作会导致日志文件也要不断增长,也会造成磁盘的负荷加大。

解决办法:

针对一:

避免大表操作,所有的操作均可以按省或者时间分开,这样无论从时间或者地域维度,基本上可以将大表拆成30张以上的小表操作,甚至更多。然后再对结果进行合并,应该可以避免上述问题。

针对二:

无解决方案,只是建议将我们的数据库也单独分到一组磁盘上去,不要跟系统竞争。

针对三:

及时删除无用的临时数据,保障数据库空间,同时也可以做上空间监控,一旦数据文件空间发生增长时,给DBA一个预警邮件,我们收到邮件后可以立即做相应处理。

针对四:

日志文件目前已经涨得较大,我们执行一下截断日志的动作,将日志文件的空间使用保持在一个较低水平

分享到:
评论

相关推荐

    SQL Server分组排序取数据的实现

    在SQL Server中,分组和排序是数据处理的两个关键操作。它们可以帮助我们对大量数据进行聚合、组织和筛选,以便更好地分析和理解数据。本文将深入探讨如何在SQL Server中实现分组排序并获取每组的特定行数据。 首先...

    SQL Server宝典SQL Server语句大全

    SQL Server中的查询主要通过SELECT语句实现,可以进行单表查询、多表联接、子查询、聚合函数(如COUNT、SUM、AVG)以及分组和排序。此外,JOIN操作(如INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)用于...

    ORACLE和SQL Server的语法区别

    ### ORACLE和SQL Server的语法区别 #### 一、概述 本文主要介绍Oracle与SQL Server在SQL语言层面的异同之处,重点在于Transact-SQL(T-SQL)与PL/SQL之间的区别,并提供了一些迁移策略。对于希望将现有的Oracle...

    sqlserver sql语法大全

    ### SQLServer SQL语法大全 #### 创建数据库 在SQL Server中创建数据库是一项基本操作,通过`CREATE DATABASE`命令来实现。创建数据库时可以指定文件和日志文件的位置、初始大小及增长方式等参数。 **语法示例:**...

    SQL Server数据库占用过多内存的解决方法

    通过对SQL Server内存使用机制的理解,我们可以采取多种措施来优化内存管理和查询性能。合理配置最大内存使用量、优化查询策略、合理使用索引等方法可以帮助我们有效控制SQL Server的内存占用,并提高整体系统的性能...

    sql server 2005 技术内幕t-sql查询源码

    以及SQL Server中的事务管理,包括读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化(SERIALIZABLE)隔离级别,同时可能涉及死锁问题及解决方案。 通过学习这本书...

    SQL Server2005基本方法和语句

    本文将深入解析 SQL Server 2005 的基本方法与常用语句,包括数据库的创建与删除、表的创建与修改、数据的插入与删除等关键操作,旨在为数据库管理员和开发者提供全面的指导。 #### 1. 创建数据库 创建数据库是...

    SQl server练习50题

    在SQL Server的学习过程中,实践是提升技能的关键。"SQL Server练习50题"是一个非常实用的资源,旨在帮助用户巩固SQL Server的基础知识,特别...在解决这些练习时,不断实践和反思将使你在SQL Server的掌握上更进一步。

    Inside Microsoft SQL Server 2008 T-SQL Programming

    《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入探讨了SQL Server 2008中的T-SQL编程技术,这是SQL Server数据库管理与开发的核心语言。T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的...

    SQL Server 2005 技术内幕四部

    了解存储引擎的工作原理可以帮助读者优化数据库性能,解决存储和查询效率问题,如合理设计表结构、选择合适的索引类型、理解锁和并发控制机制等。 "163disk.com_Microsoft SQL Server 2005技术内幕 查询、调整和...

    sqlserver2008视频教程

    - **常见问题解决**:总结并解答在使用过程中遇到的典型问题及其解决方案。 以上内容涵盖了 SQL Server 2008 视频教程中的关键知识点,通过深入学习这些内容,可以帮助初学者快速掌握 SQL Server 2008 的使用技巧,...

    Microsoft SQL Server 2008技术内幕:T-SQL查询.pdf

    6. **窗口函数**:SQL Server 2008引入了窗口函数,如RANK、ROW_NUMBER、LEAD和LAG,这些函数允许在结果集上执行行级别的计算,为复杂的数据分析提供了便利。 7. **T-SQL流程控制**:IF...ELSE、WHILE、CASE表达式...

    基于sql server 2005学习sql

    SQL Server 2005是微软推出的数据库管理系统,它包含了多种组件和服务,如数据库引擎、Analysis Services(分析服务)、Integration Services(集成服务)、Reporting Services(报表服务)等,旨在为企业提供数据...

    Microsoft SQL Server 2008技术内幕:T-SQL查询_源代码及附录.zip

    SQL Server 2008支持多种类型的JOIN,包括INNER JOIN、LEFT JOIN(OUTER JOIN)、RIGHT JOIN和FULL OUTER JOIN。这些操作用于合并来自两个或更多表的数据,根据指定的匹配条件。 3. **子查询**: 子查询是嵌套在...

    SQLServer实用SQL语句大全

    本资料"SQLServer实用SQL语句大全"是一份全面的手册,旨在帮助用户理解和掌握SQL Server中的SQL语法和函数。 一、SQL基本操作 1. 数据查询:SQL的SELECT语句是用于从数据库中检索数据的核心命令。通过指定列名、...

    浅谈SQL数据库中滥用临时表、排序的解决方案

    在SQL数据库中,临时表和排序是两个常见的操作,但过度依赖它们可能会导致性能问题。本文将探讨如何避免滥用临时表和排序,并提供一个具体的案例来阐述解决方案。 首先,临时表在处理大量数据时可以提供便利,但...

    SQL Server 基础

    SQL Server提供了多种类型的索引,如聚集索引(决定了表的物理排序顺序)和非聚集索引(不决定表的物理顺序)。另外,触发器可以实现数据的自动处理,而视图则提供了一种虚拟表的视角,方便数据的查询和管理。 最后...

    《Microsoft SQL Server 2005技术内幕:T-SQL查询》示例代码

    T-SQL(Transact-SQL)是微软对标准SQL的扩展,是SQL Server的核心组件,用于数据库管理、数据查询和程序开发。这本书的主要目标是帮助读者掌握T-SQL查询的各种技巧和最佳实践,以提升在SQL Server环境中的数据处理...

Global site tag (gtag.js) - Google Analytics