`
snoopy7713
  • 浏览: 1151945 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

MySQL 分区

阅读更多

MYSQL 存储过程,定义告警日志分区

DROP TABLE IF EXISTS antiTamperLog;
CREATE TABLE antiTamperLog
(
   eventId              INT NOT NULL,
   tamperType           INT NOT NULL,
   filePath             VARCHAR(4096) NOT NULL,
   startTime            DATETIME NOT NULL,
   content              VARCHAR(2000)
)
ENGINE = INNODB
DEFAULT CHARSET = UTF8
PARTITION BY RANGE(TO_DAYS(startTime))
(
  PARTITION a201112 VALUES LESS THAN (TO_DAYS('2011-12-01'))
);

DROP TABLE IF EXISTS attacklog;
CREATE TABLE attacklog
(
   eventId              INT NOT NULL,
   startTime            DATETIME,
   logType              INT NOT NULL,
   attackPhase          VARCHAR(20),
   attackLevel          CHAR(1),
   srcIp                VARCHAR(39) NOT NULL,
   dstIp                VARCHAR(39) NOT NULL,
   attackProtocol       VARCHAR(10) NOT NULL,
   attackDomain         VARCHAR(100) NOT NULL,
   attackPath           VARCHAR(512) NOT NULL,
   attackParameter      VARCHAR(512) NOT NULL,
   ruleFileName         VARCHAR(20) NOT NULL,
   ruleId               INT NOT NULL,
   ruleDesc             VARCHAR(200) NOT NULL,
   websiteId            CHAR(36) NOT NULL,
   hostId               INT NOT NULL,
   content              VARCHAR(2000)
)
ENGINE = INNODB
DEFAULT CHARSET = UTF8
PARTITION BY RANGE(TO_DAYS(startTime))
(
  PARTITION p201112 VALUES LESS THAN (TO_DAYS('2011-12-01'))
);

/* 创建存储过程 */
DROP PROCEDURE IF EXISTS `cssp`.`Set_Partition`;

DELIMITER $$

CREATE PROCEDURE `cssp`.`Set_Partition`(IN prex VARCHAR(10),IN n INT,IN tablename VARCHAR(20))
BEGIN
DECLARE a INT;
DECLARE b INT;
DECLARE pname VARCHAR(20);
DECLARE pdate VARCHAR(20);

SET @a = 2012;
SET @b = 12;

WHILE @a <= n DO
  SET @b = 1;
  WHILE @b <= 12 DO
  #生成分区名称例如 201201
   IF @b < 10 THEN
     SET @pname = CONCAT(@a,'0',@b);
   ELSE
     SET @pname = CONCAT(@a,@b);
   END IF;
   #生成LESS THAN的时间例如分区名为201201则时间为201202
   IF @b < 9 THEN
     SET @pdate = CONCAT(@a,'0',@b+1,'01');
   ELSEIF @b = 12 THEN
     SET @pdate = CONCAT(@a+1,'01','01');
   ELSE
     SET @pdate = CONCAT(@a,@b+1,'01');
   END IF;

   SET @s1=CONCAT('ALTER TABLE ',tablename,' ADD PARTITION (PARTITION ',prex,@pname,' VALUES LESS THAN (TO_DAYS (''',DATE(@pdate),''')))');
   PREPARE stmt2 FROM @s1;
   EXECUTE stmt2;
   DEALLOCATE PREPARE stmt2;
   SET @b = @b + 1;
  END WHILE;
  SET @a = @a + 1;
END WHILE;
END$$

DELIMITER ;

CALL Set_Partition('a',2015,'attacklog');
CALL Set_Partition('p',2015,'antitamperlog');

#查看分区
SELECT partition_name
FROM INFORMATION_SCHEMA.PARTITIONS 
WHERE TABLE_SCHEMA='cssp' AND table_name='attacklog' OR table_name='antiTamperLog';
 
分享到:
评论

相关推荐

    互联网公司为啥不使用mysql分区表

    "互联网公司为啥不使用mysql分区表" 在互联网公司中,mysql分区表是一个比较少用的技术,这是因为分区表存在一些缺陷和限制,使得互联网公司更多地选择自己分库分表来水平扩展数据库。 首先,分区表的设计需要考虑...

    MySQL分区表自动创建及删除存储过程

    MySQL分区表是一种优化大型数据表查询效率的技术,它将一个大表分成多个逻辑上相连但物理上独立的部分,每个部分称为一个分区。分区可以按照不同的策略进行,如范围、哈希、列表或复合分区。这样做有助于提高数据...

    mysql分区文档

    MySQL 分区是数据库管理系统中的一种优化策略,它将大型表的数据分布在不同的物理存储上,以提高查询性能和便于管理大量数据。分区的本质是将一张大表逻辑上分成多个部分,但用户在操作时仍然将其视为单个表。MySQL ...

    MySQL分区分表方案实践手册

    ### MySQL分区分表方案实践手册知识点详述 #### 一、MySQL分区简介 数据库分区是一项重要的物理数据库设计技术,主要用于优化数据库性能并简化数据管理。MySQL的分区主要包括两种形式:水平分区和垂直分区。 - **...

    mysql分区资源整理

    ### MySQL分区资源整理 #### 一、分区概念与优势 MySQL中的分区技术是数据库优化的重要手段之一,尤其适用于处理大规模数据集。通过分区,数据库能够将一个庞大的表拆分为若干个小部分,使得管理和操作变得更加...

    mysql分区.pdf

    MySQL分区是数据库管理系统MySQL中的一种数据存储管理技术,它允许用户将数据表拆分成多个较小的、更容易管理的片段。这些片段被称为分区。通过这种技术可以提高数据库的性能,便于维护和备份,并且可以对不同分区...

    mysql如何进行分区-mysql分区有哪些方法.docx

    1. **存储能力增强**:相比于单一的磁盘或文件系统分区,MySQL 分区可以存储更多数据。 2. **数据清理便捷**:可以更简单地删除不再需要或过时的数据。 3. **查询优化**:某些查询可以直接在特定分区上执行,减少...

    创建mysql表分区的方法

    【MySQL 表分区详解】 MySQL 表分区是一种高级的数据组织技术,它允许将大型表分成较小、更易管理和处理的部分。这种技术对于处理海量数据,尤其是超过亿级别的数据集非常有效,可以显著提升查询性能和数据管理效率...

    MySQL分区管理工具

    MySQL分区管理工具是一种优化数据库性能的技术,它将大型表分解为更小、更易管理的部分,以提高查询效率和数据管理的便利性。在MySQL中,分区主要基于表的数据,根据预定义的规则将数据分布到不同的物理部分。这样...

    mysql分区

    MySQL分区是一种数据库优化技术,它将大型表分成更小、更易管理的部分,以提高查询性能和数据管理效率。在MySQL中,分区主要是为了解决大数据量时的查询速度问题,通过将数据分散到不同的物理存储块上,使得查询可以...

    zabbix_mysql分区1

    总的来说,Zabbix的MySQL分区优化是一个涉及数据库设计和管理的重要环节。通过合理地利用分区技术,可以有效应对大规模监控数据的挑战,保持Zabbix系统的高效运行。不过,务必根据你的实际情况进行调整,并考虑其他...

    MySQL分区实战

    #### 一、MySQL分区概述与应用场景 在当今互联网行业中,MySQL数据库作为最常用的关系型数据库之一,在数据管理方面扮演着极其重要的角色。随着数据量的不断增长,对数据库性能的要求也日益提高。为了提高查询效率...

    MySQL分区表:万字详解与实践指南

    ### MySQL分区表:万字详解与实践指南 #### 一、引言 在现代数据库管理中,随着数据量的不断增长,如何高效管理和查询数据成为了一个重要的课题。MySQL作为广泛使用的开源关系型数据库管理系统之一,提供了多种强大...

    MySQL分区技术在传统项目中的应用.pdf

    MySQL分区技术是一种将数据库中的表分成多个较小的、更易于管理的部分的策略,它通过将数据分布到不同的物理区域来提升数据库性能。这种技术在处理大量数据的传统项目中尤为重要,可以帮助改善数据库的扩展性、管理...

    MySQL分区分表的设计及实现-收藏备用.pdf

    ### MySQL分区分表的设计及实现 #### 一、引言 随着信息技术的飞速发展,数据量呈现爆炸式增长,海量数据的管理和处理成为了一项挑战。尤其在关系型数据库中,如MySQL这样的系统,当单个表的数据量达到一定规模后...

    MySQL分区和分表技术总结.docx

    MySQL 分区和分表技术总结 MySQL 分区和分表技术是数据库性能优化的重要手段,特别是在大型数据库系统中。以下是 MySQL 分区和分表技术的详细介绍: 什么是分表? 分表是将一个大表按照一定的规则分解成多张具有...

Global site tag (gtag.js) - Google Analytics