一、试验方式:
1、利用工具进行数据插入、查询试验,目标是单表数据超过1000W条记录。
2、针对单个表创建单独的数据存储空间和索引存储空间。
3、对表进行anlyze分析。
4、创建表分区。
二、试验结论:
1 数据插入与数据量大小无关,与数据表是否在大量并行操作有关。
2 数据查询与表的数据存储空间有很大关系,数据量大的表建议单独创建数据存储空间和索引存储空间。
3 数据查询结果集的大小与查询性能有很大关系,如在普通索引下,查询结果大与小耗时差别接近1000倍以上。
4 查询性能与索引类型有很大关系,主要是根据范围查询,如时间范围
select count(id) from list where time between '2011-04-30 00:00:00' and '2011-05-30 00:01:00';
time字段由于离散度很高,只能建为b树索引,在按时间范围进行查询时耗时在10m左右,经过数据分析。
如改成
select count(id) from list
where itime >= '20100430' and itime <= '20100530';
itime字段为整数,精确到年月日,由于离散度低,可以建为bitmap类型索引,一年只有356个,即便有1亿条记录,其索引记录最多只
有356条。
查询统计就可以过到ms级(0.078s)比前一种情况提高几百倍。同样字段重复值与记录数之比为1:100以上都可以建为bitmap类型索引,一般大数据表要结合各种索引的特性进行创建合适的索引。
5 SQL语法与性能有很大关系,一是索引顺序,二是嵌套查询
直接从查询统计,索引的解析是从后向前解析。
select count(id) from list
where itime >= '20100330' and itime <= '20100830'
and icode = '3123232331'; 3.219s
select count(id) from (select id from list
where itime >= '20100330' and itime <= '20100830'
and icode = '3123232331'); 0.015s
6 表分析与查询性能有关系。通过anlyze对表或是索引进行分析前后对查询性能有明显的变化。
分析表中所有索引:analyze table list compute statistics for all indexes
分析表中指定索引:analyze index LIST_2 compute statistics
分析表所有索引耗时长,分析指定索引耗时短。
7、如果按时间存放可以针对大数据表创建表分区,提高插入和查询速度。
创建表并指定分区。
create table LIST
(
ID INTEGER not null,
ICODE CHAR(14),
NAME CHAR(64),
SEX CHAR(2),
CARD_NUMBER CHAR(20),
TIME CHAR(21),
ITIME INTEGER,
MONTH INTEGER
)
partition by list (MONTH)
(
partition MONTH1 values (1)
tablespace TEST1,
partition MONTH2 values (2)
tablespace TEST2,
partition MONTH3 values (3)
tablespace TEST3,
partition MONTH4 values (4)
tablespace TEST4,
partition MONTH5 values (5)
tablespace TEST5,
partition MONTH6 values (6)
tablespace TEST6,
partition MONTH7 values (7)
tablespace TEST7,
partition MONTH8 values (8)
tablespace TEST8,
partition MONTH9 values (9)
tablespace TEST9,
partition MONTH10 values (10)
tablespace TEST10,
partition MONTH11 values (11)
tablespace TEST11,
partition MONTH12 values (12)
tablespace TEST12
);
创建索引其它属性与普通表一样。
create index LIST_1 on LIST (ID);
create index LIST_2 on LIST (ICODE);
create bitmap index LIST_3 on LIST (ITIME);
create bitmap index LIST_4 on LIST (MONTH);
查询数据
select count(id) from LIST partition(MONTH1)
where itime between '20100101' and '20100131'
and icode = '1000182';
删除分区数据
删除分区:alter table [tbname] drop partition [ptname];
alter table LIST drop partition MONTH1;
删除子分区:alter table [tbname] drop subpartition [ptname];
最后总结:表分区和sql语句优化,建立索引,数据缓存、数据分流,读写分离,和一些第三方插件
分享到:
相关推荐
Oracle 大数据量操作性能优化 Oracle大数据量操作性能优化是指在处理大量数据时,如何提高 Oracle 数据库的性能。该优化技术涉及到多个方面,包括分区、Direct Insert、并行和排序处理等。 分区是 Oracle 中的一种...
### Oracle大数据量操作优化 在面对Oracle数据库中的大数据量操作时,如何有效地提升操作性能成为了一个重要的课题。本文将从不同角度出发,详细介绍如何通过多种技术手段和策略优化Oracle数据库的大数据量操作。 ...
MySQL数据库在处理大数据量时,性能优化至关重要。以下是一些关键的优化策略和技术: 1. **连接查询与子查询优化**: - **连接查询**(JOIN):当需要从多个表中获取关联数据时,使用连接查询通常比子查询更有效率...
Oracle数据库在处理大数据量时,优化是至关重要的,特别是对于DML(Data Manipulation Language)操作,如INSERT、UPDATE和DELETE。以下是一些关键的优化策略: 1. **暂停索引与恢复**:在进行大规模更新时,可以...
SQL查询优化是数据库管理的关键环节,特别是在处理大数据量时,优化查询性能至关重要。以下是对标题和描述中提及的SQL优化技巧的详细说明: 1. **建立索引**:索引可以显著提高查询速度,尤其是在WHERE子句和ORDER ...
【SQL数据优化】是数据库管理中的重要环节,尤其是在处理大数据量时,优化SQL查询能显著提升系统的性能。本文主要从三个方面探讨如何优化SQL:索引设计、连接条件和WHERE子句。 首先,**不合理的索引设计**是导致...
_mysql 千万级数据优化_ MySQL 是一种流行的开源关系数据库管理系统,在大规模数据处理中,MySQL 的性能优化变得非常重要。下面我们将从查询优化和 SQL 编写注意事项两个方面来讨论 MySQL 千万级数据优化。 查询...
这些方法可以用来解决大数据量的问题,例如数据字典、判重、集合求交集等问题。 Bloom Filter Bloom filter 是一种空间效率高、查询效率高的数据结构,可以用来实现数据字典、判重、集合求交集等操作。其原理是...
标题与描述概述的知识点主要集中在数据库查询优化技巧上,尤其针对拥有百万级别数据量的数据库。以下是对这些知识点的详细解读: ### 数据库快速查询优化技巧 #### 1. 避免全表扫描,优化WHERE子句 - **空值判断**...
在C#编程中,将大数据量导出到Excel是一个常见的需求,特别是在数据分析、报表生成或者数据交换场景下。Microsoft.Office.Interop.Excel库是.NET Framework提供的一个用于与Microsoft Excel交互的COM接口,它允许...
在处理海量数据时,查询优化显得尤为重要,特别是当数据量达到百万级别甚至更高时。查询优化旨在提高数据查询的效率,减少查询时间,提升系统性能。以下是一些关键的优化策略: 1. **合理使用索引**: - **索引...
在MySQL中,面对百万级数据量的分页查询,如何高效地进行操作并优化查询性能是数据库管理员和开发人员必须关注的问题。以下是一些常用的方法和优化建议: 1. **直接使用LIMIT语句**:这是最基础的分页查询方式,如`...
MySQL千万级大数据SQL查询优化技巧详解 在处理大数据量的MySQL数据库时,高效的SQL查询显得尤为重要。以下是一些关键的优化技巧,可以帮助你提升查询性能,避免全表扫描,充分利用索引,以及优化查询逻辑: 1. **...
数据分区是将大表分成多个小表,每个小表独立存储,这样可以分散查询负载,提高查询速度。 总结来说,优化大量数据处理的关键在于理解数据访问模式,合理设置参数,如`PreFetchRows`,并充分利用索引和优化内存管理...
在大数据量的存储和处理场景中,有效地管理数据输入与更新是至关重要的。传统的数据处理方式,例如直接使用参数化SQL或DataSet与DataAdapter,可能会在处理大批量数据时遇到性能瓶颈,因为每次操作都要对目标表进行...
1. **避免全表扫描**:全表扫描意味着数据库需要遍历整个表来寻找匹配的记录,这在大数据量下非常耗时。通过在WHERE子句涉及的列上创建索引,可以加速查询过程。 2. **处理NULL值**:在WHERE子句中避免对字段进行...
CRC32真值表是CRC32算法优化的一个重要手段,通过预先计算并存储字节值对应的CRC32结果,能够在实际计算过程中极大地提升效率。这对于需要快速处理大量数据的场合尤为重要。理解CRC32真值表的工作原理对于深入掌握...
4. **优化D表关联策略**:为了进一步提升查询效率,D表在进行关联操作时应该尽可能只关联数据量较小的表。对于这些相对固定的小表,还可以考虑使用缓存技术,以进一步加快查询速度。这样不仅可以减轻数据库的压力,...
这篇博文“Oracle大数据量导入(CSV导入)”将深入探讨如何使用Oracle的各种工具和技术来导入CSV(逗号分隔值)文件,这是一种常见的数据格式。下面我们将详细讨论相关知识点。 1. **SQL*Loader** SQL*Loader是...
总结来说,优化千万级大表的深度分页查询,需要结合索引策略、查询优化、硬件配置调整以及架构设计等多个方面综合考虑。通过子查询优化、覆盖索引、数据归档等手段,可以在很大程度上改善查询性能,使得深度分页变得...