`
85977328
  • 浏览: 1903832 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL基础----大幅度提高性能方案,分区表

阅读更多
    下面就笔者工作中遇到的时间问题,模拟一下情况对大家进行介绍.
    工作中仍然是海量数据出现的情况.每年大概会有几亿条记录.而且数据的时效性比较强.但历史数据仍然要求保留.这个时候经过分析和研究,最终决定通过时间字段进行分区.下面是分区表的创建代码.读者门在插入了不同年份时间段以后,可以时间字段为条件进行查询,可以看到数据库扫描过的区段.
CREATE TABLE part_data
      (c1 int default NULL,
  c2 varchar(30) default NULL,
  c3 date default NULL)
  partition by range (to_days(c3))
 (PARTITION p0 VALUES LESS THAN (to_days('1995-01-01')),
 PARTITION p1 VALUES LESS THAN (to_days('1996-01-01')) ,
 PARTITION p2 VALUES LESS THAN (to_days('1997-01-01')) ,
 PARTITION p3 VALUES LESS THAN (to_days('1998-01-01')) ,
 PARTITION p4 VALUES LESS THAN (to_days('1999-01-01')) ,
 PARTITION p5 VALUES LESS THAN (to_days('2000-01-01')) ,
 PARTITION p6 VALUES LESS THAN (to_days('2001-01-01')) ,
 PARTITION p7 VALUES LESS THAN (to_days('2002-01-01')) ,
 PARTITION p8 VALUES LESS THAN (to_days('2003-01-01')) ,
 PARTITION p9 VALUES LESS THAN (to_days('2004-01-01')) ,
 PARTITION p10 VALUES LESS THAN (to_days('2010-01-01')),
 PARTITION p11 VALUES LESS THAN MAXVALUE );


分区查询,可以查看扫描过的区段.当然要加上where子句,以c3时间为条件进行检索.若不使用时间字段,分区将失去作用.
explain partitions select * from part_data\G



1
1
分享到:
评论
7 楼 finallygo 2011-01-07  
85977328 写道
分表的时候,一张表的数据量一般在3000-5000万条数据比较合理

3000-5000万?你确定mysql可以承受这么大的数据量而不会影响查询,连接和统计的效率?
6 楼 85977328 2011-01-06  
分表的时候,一张表的数据量一般在3000-5000万条数据比较合理
5 楼 finallygo 2011-01-06  
还有就是分页的时候效率也面临了很大的挑战
因为我是一天分在一个表里,所以如果客户在页面上选择了好几天的数据,而是页面上只会显示前几十条,也就是说我还必须把这些表先union了再limit,而不像之前一张表,加一个where语句limit就可以了,这个性能问题要怎么解决呢?
4 楼 finallygo 2011-01-06  
你说的是分不同的表吗?我现在的项目因为要进行大数据量的日志处理,所以我现在分成了多个表(按天为单位),但是现在的问题就是如果要统计查询的话很麻烦,必须要把一个一个表的union起来,而且再加上inner join,left join之类的操作之后,效率更是难以忍受了
3 楼 85977328 2011-01-05  
应用程序分区,可以说是万能的分区方案了。与数据库无关.只是看应用程序那边的DAO的处理方式
2 楼 85977328 2011-01-05  
可以通过应用程序手工分区
比如一年一个表,在增,删,查,改的时候,自动去寻找对应的表
1 楼 finallygo 2011-01-05  
这个是5.1以上的版本才支持的吧,如果是5.0版本要解决类似问题怎么办呢?

相关推荐

    mysql-8.0.28-winx64.zip + mysql80-community-release-el7-5.noarch

    在本案例中,我们有两个不同平台的安装包:一个是针对Windows操作系统的“mysql-8.0.28-winx64.zip”,另一个是用于Linux(特别是基于Red Hat Enterprise Linux 7)的“mysql80-community-release-el7-5.noarch”。...

    windows版mysql安装包-mysql5-mysql-5.5.zip

    - **下载**: 首先,你需要从官方网站或可信的源下载适用于Windows的MySQL 5.5安装包,即“mysql5-mysql-5.5.zip”。 - **解压**: 解压缩下载的文件,得到安装文件。 - **运行安装向导**: 双击setup.exe开始安装...

    mysql-connector-java-5.1.37-jar

    5. 兼容MySQL服务器的新特性:如支持分区表、存储过程、触发器等。 使用"mysql-connector-java-5.1.37.jar"的步骤通常如下: 1. 将JAR文件添加到Java项目的类路径中,可以是构建工具(如Maven或Gradle)的依赖,也...

    mysql-connector-java-5.1.40.zip和mysql-connector-java-5.1.10.jar

    本文将深入探讨这两个文件:"mysql-connector-java-5.1.40.zip" 和 "mysql-connector-java-5.1.10.jar",以及它们在Java开发中的作用。 首先,`mysql-connector-java-5.1.40.zip` 是一个压缩文件,包含了MySQL ...

    mysql-shell:mysql-shell-8.4.0-windows-x86-64bit.zip

    2. **自动完成和提示**:在Shell中,用户可以享受到自动补全和语法提示功能,极大地提高了编写查询和脚本的效率。 3. **图形化用户界面(GUI)**:虽然MySQL Shell主要是命令行工具,但也可以通过JavaScript API...

    mysql连接包mysql-connector-java-5.1.27.jar

    MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysql-connector-java`是MySQL官方提供的用于Java应用程序连接到MySQL服务器的驱动程序。`mysql-connector-java-5.1.27.jar`是这个驱动的一个特定版本,它...

    mysql-connector-j-8.0.31

    此外,它还支持MySQL的特性,如SSL连接、分区表、复制和负载均衡。 总结来说,"mysql-connector-j-8.0.31"是Java开发者连接MySQL数据库的关键组件,通过理解JDBC机制和有效使用这个驱动,可以实现高效、安全的...

    mysql-cluster-8.0.20-winx64.zip

    MySQL Cluster是一种高可用性、高性能的数据库解决方案,它在MySQL服务器的基础上增加了分布式数据存储和实时事务处理的能力。在“mysql-cluster-8.0.20-winx64.zip”这个压缩包中,我们找到了MySQL Cluster的...

    mysql-server-mysql-8.3.0.tar.gz

    6. **分区表改进**:分区表是大型数据库中常见的优化手段,新的版本可能扩展了分区策略,提升了处理大数据集的能力。 7. **通用表表达式(Common Table Expressions, CTE)**:这是一类临时结果集,可以用于复杂...

    mysql80-community-release-el8-1.noarch.7z

    - 分区表改进:支持更多的分区类型和操作,例如在线重定义分区。 - 自动化备份和恢复工具:MySQL Enterprise Backup 提供了自动化和灵活的备份选项,简化了数据保护流程。 在开发和学习环境中,MySQL 8.0 提供了一...

    mysql-server-mysql-5.7.36.tar.gz

    6. **分区表优化**:对分区表的处理有了显著的提升,包括更灵活的分区策略和更高效的分区删除。 7. **安全性和认证**:5.7版本增强了安全特性,比如支持更强大的加密算法,改进了认证插件,如引入了caching_sha2_...

    mysql-for-visualstudio-1.2.7.msi mysql-connector-net-6.9.8

    这个安装包(mysql-for-visualstudio-1.2.7.msi)将帮助开发者在他们的开发环境中安装这个插件,以便于在创建和测试应用程序时直接与MySQL数据库交互。 MySQL Connector/Net 6.9.8 是MySQL数据库与.NET Framework...

    MySQL-connector-java-8.0.28

    MySQL-connector-java-8.0.28 是MySQL数据库与Java应用程序之间通信的重要组件,它是一个JDBC(Java Database Connectivity)驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。在这个版本中,...

    mysql-connector-java-5.0.8-bin.jar

    MySQL Connector/J是MySQL官方提供的用于Java应用程序连接MySQL数据库的驱动程序,它的全称为"mysql-connector-java"。在版本5.0.8中,这个jar文件提供了一个稳定且功能丰富的接口,使得Java开发者能够轻松地在他们...

    mysql-essential-5.1.52-win32

    该安装包中的"mysql-essential-5.1.52-win32.msi" 文件是一个Windows Installer包,用于在Windows系统上安装MySQL服务器、客户端工具和一些基础开发库。安装过程通常包括配置MySQL服务器的初始设置,如root用户的...

    MySQL-client-5.6.29-1.linux_glibc2.5.x86_64,MySQL-server-5.6.29-1.linux_glibc

    Hive通常会将元数据(例如表结构和分区信息)存储在关系数据库中,MySQL是一个常见的选择。集成MySQL可以提供高可用性和可扩展性,确保Hive的数据管理层面上的稳定性。 `Linux下的Mysql安装.doc`可能提供了在Linux...

    mysql5.5.28-win-x64

    3. **分区功能**:MySQL 5.5增强了分区功能,支持更多的分区类型和策略,如线性哈希分区、范围分区等,这有助于管理和优化大型表的性能。 4. **Full-text Search**:全文搜索功能在5.5版本中得到了增强,支持更多的...

    Go-mysql-schema-sync是一款使用Go开发跨平台的MySQL表结构自动同步工具

    4. **高性能**:基于Go语言的并发处理能力,Go-mysql-schema-sync在处理大量表结构同步时表现出优秀的性能,减少了同步过程中的等待时间。 5. **配置灵活**:用户可以通过配置文件灵活设定同步规则,比如选择特定的...

    mysql-installer-community-5.6.msi安装版

    - **分区优化**:MySQL 5.6 对分区表的支持更加完善,包括对分区表的索引优化、分区裁剪等,这些改进使得分区表的查询速度更快。 - **InnoDB 存储引擎增强**:InnoDB 是 MySQL 最常用的事务安全存储引擎之一,在 ...

    mysql-installer-community-8.0.28.0 MySql数据库安装包

    这个“mysql-installer-community-8.0.28.0”压缩包包含的是MySQL数据库的安装程序,专为用户提供了一个方便的方式来安装和配置MySQL服务器。 **MySQL 8.0的主要特性:** 1. **性能提升**:MySQL 8.0通过优化查询...

Global site tag (gtag.js) - Google Analytics