MYSQL 服务端优化----------分区

  1. 首先是表空间 减少 磁盘io

       my.ini目录下  
       innodb_file_per_table=1
    

2.对于已经有大量数据 进行分区操作流程

	一,什么是mysql分表,分区
			什么是分表,从表面意思上看呢,就是把一张表分成N多个小表
			什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的  		           磁盘上
	二、自定义规则分表

	大表可以按照业务的规则来分解为多个子表。通常为以下几种类型,也可自己定义规则。

		Range(范围)–这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区。
		
		Hash(哈希)–这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。
		
		Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
		
		List(预定义列表)–这种模式允许系统通过预定义的列表的值来对数据进行分割。
		
		Composite(复合模式) –以上模式的组合使用 

3.下面是我操作进行的过程

	-- 创建个临时表 和old表一样 
	CREATE  TABLE  mini_app_bulletin_temp LIKE mini_app_bulletin;
	
	-- 把 old表数据插入到临时表中  
	INSERT INTO mini_app_bulletin_temp  SELECT * FROM mini_app_bulletin;
	
	-- 删除old表
	 DROP TABLE  mini_app_bulletin;
	
	-- 重新创建新表  然后进行分区  
	
	 DROP TABLE IF EXISTS `mini_app_bulletin`;
	 CREATE TABLE `mini_app_bulletin` (
	  `id` varchar(64) CHARACTER SET utf8 NOT NULL COMMENT '主键id',
	  `title` varchar(512) CHARACTER SET utf8 DEFAULT NULL COMMENT '公告公示标题',
	  `content` longtext,
	  `tid` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '爬取公告的id用于验重',
	  `hits` int(11) DEFAULT '0' COMMENT '点击数',
	  `province` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '省份',
	  `province_name` varchar(64) DEFAULT NULL COMMENT '省份名称',
	  `city` varchar(64) DEFAULT NULL COMMENT '城市',
	  `city_name` varchar(64) DEFAULT NULL COMMENT '城市名称',
	  `keywords` varchar(1024) CHARACTER SET utf8 DEFAULT NULL COMMENT '公告检索关键字',
	  `from_site` varchar(512) CHARACTER SET utf8 DEFAULT NULL COMMENT '公告来源网站',
	  `status` varchar(64) DEFAULT '0' COMMENT '是否贴标签',
	  `type` varchar(64) DEFAULT '1' COMMENT '公告类型1=招标公告;2=变更公告;3=中标公告',
	  `purchase_type` varchar(64) DEFAULT NULL COMMENT '采购类型 字典类型为 : bulletin_keyword parentId为: 5ea96ae460354383808db0510480e417',
	  `create_by` varchar(64) CHARACTER SET utf8 DEFAULT '' COMMENT '创建者',
	  `create_date` datetime DEFAULT NULL COMMENT '创建时间',
	  `update_by` varchar(64) CHARACTER SET utf8 DEFAULT '' COMMENT '更新者',
	  `update_date` datetime DEFAULT NULL COMMENT '更新时间',
	  `remarks` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '备注信息',
	  `del_flag` char(1) CHARACTER SET utf8 DEFAULT '0' COMMENT '删除标记',
	  `tender_project_code` varchar(255) DEFAULT NULL COMMENT '招标项目编号',
	  `tenderer_code` varchar(255) DEFAULT NULL COMMENT '招标人统一社会信用代码',
	  `tender_agency_code` varchar(255) DEFAULT NULL COMMENT '招标代理统一社会信用代码',
	  `related_suppliers_code` varchar(1024) DEFAULT NULL COMMENT '相关供应商代码',
	  `organiz_form` varchar(64) DEFAULT '2' COMMENT '组织形式:1自行招标2委托招标',
	  `tenderer_name` varchar(255) DEFAULT NULL COMMENT '招标人名称',
	  `publish_date` varchar(255) DEFAULT NULL,
	  `open_bid_date` varchar(255) DEFAULT NULL,
	  `first_trial_date` datetime DEFAULT NULL COMMENT '初审时间',
	  `rechecking_date` datetime DEFAULT NULL COMMENT '复核时间',
	  `is_suspect_repeat` varchar(64) DEFAULT NULL COMMENT '疑似重复标识',
	  `total_budget` varchar(64) DEFAULT '0' COMMENT '项目总预算',
	  PRIMARY KEY (`id`,`tid`),
	  UNIQUE KEY `tid` (`tid`),
	  KEY `mini_app_bulletin_create_date` (`create_date`),
	  KEY `mini_app_bulletin_del_flag_create_date` (`del_flag`,`create_date`),
	  KEY `mini_app_bulletin_update_date` (`update_date`),
	  KEY `mini_app_bulletin_first_trial_date` (`first_trial_date`),
	  KEY `mini_app_bulletin_tender_project_code` (`tender_project_code`(191)),
	  KEY `mini_app_bulletin_related_suppliers_code` (`related_suppliers_code`(191)),
	  KEY `mini_app_bulletin_tenderer_code` (`tenderer_code`(191)),
	  KEY `mini_app_bulletin_tender_agency_code` (`tender_agency_code`(191)),
	  KEY `INDEX_ON_PROVINCE_NAME` (`province_name`),
	  KEY `INDEX_ON_TITLE` (`title`(255))
	) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小程序展示的公告数据'
	 PARTITION by   KEY(tid) 
	 PARTITIONS  7;
	
	
	-- 插入之前的数据
	
	INSERT INTO mini_app_bulletin  SELECT * FROM mini_app_bulletin_temp;

根据时间的方式

	DROP TABLE IF EXISTS `mini_app_bulletin`;
	CREATE TABLE `mini_app_bulletin` (
	  `id` varchar(64) CHARACTER SET utf8 NOT NULL COMMENT '主键id',
	  `title` varchar(512) CHARACTER SET utf8 DEFAULT NULL COMMENT '公告公示标题',
	  `content` longtext,
	  `tid` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '爬取公告的id用于验重',
	  `hits` int(11) DEFAULT '0' COMMENT '点击数',
	  `province` varchar(64) CHARACTER SET utf8 DEFAULT NULL COMMENT '省份',
	  `province_name` varchar(64) DEFAULT NULL COMMENT '省份名称',
	  `city` varchar(64) DEFAULT NULL COMMENT '城市',
	  `city_name` varchar(64) DEFAULT NULL COMMENT '城市名称',
	  `keywords` varchar(1024) CHARACTER SET utf8 DEFAULT NULL COMMENT '公告检索关键字',
	  `from_site` varchar(512) CHARACTER SET utf8 DEFAULT NULL COMMENT '公告来源网站',
	  `status` varchar(64) DEFAULT '0' COMMENT '是否贴标签',
	  `type` varchar(64) DEFAULT '1' COMMENT '公告类型1=招标公告;2=变更公告;3=中标公告',
	  `purchase_type` varchar(64) DEFAULT NULL COMMENT '采购类型 字典类型为 : bulletin_keyword parentId为: 5ea96ae460354383808db0510480e417',
	  `create_by` varchar(64) CHARACTER SET utf8 DEFAULT '' COMMENT '创建者',
	  `create_date` date NOT NULL COMMENT '创建时间',
	  `update_by` varchar(64) CHARACTER SET utf8 DEFAULT '' COMMENT '更新者',
	  `update_date` datetime DEFAULT NULL COMMENT '更新时间',
	  `remarks` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '备注信息',
	  `del_flag` char(1) CHARACTER SET utf8 DEFAULT '0' COMMENT '删除标记',
	  `tender_project_code` varchar(255) DEFAULT NULL COMMENT '招标项目编号',
	  `tenderer_code` varchar(255) DEFAULT NULL COMMENT '招标人统一社会信用代码',
	  `tender_agency_code` varchar(255) DEFAULT NULL COMMENT '招标代理统一社会信用代码',
	  `related_suppliers_code` varchar(1024) DEFAULT NULL COMMENT '相关供应商代码',
	  `organiz_form` varchar(64) DEFAULT '2' COMMENT '组织形式:1自行招标2委托招标',
	  `tenderer_name` varchar(255) DEFAULT NULL COMMENT '招标人名称',
	  `publish_date` varchar(255) DEFAULT NULL,
	  `open_bid_date` varchar(255) DEFAULT NULL,
	  `first_trial_date` datetime DEFAULT NULL COMMENT '初审时间',
	  `rechecking_date` datetime DEFAULT NULL COMMENT '复核时间',
	  `is_suspect_repeat` varchar(64) DEFAULT NULL COMMENT '疑似重复标识',
	  `total_budget` varchar(64) DEFAULT '0' COMMENT '项目总预算',
	  PRIMARY KEY (`id`,`tid`,create_date),
	  
	  KEY `mini_app_bulletin_del_flag_create_date` (`del_flag`,`create_date`),
	  KEY `mini_app_bulletin_update_date` (`update_date`),
	  KEY `mini_app_bulletin_first_trial_date` (`first_trial_date`),
	  KEY `mini_app_bulletin_tender_project_code` (`tender_project_code`(191)),
	  KEY `mini_app_bulletin_related_suppliers_code` (`related_suppliers_code`(191)),
	  KEY `mini_app_bulletin_tenderer_code` (`tenderer_code`(191)),
	  KEY `mini_app_bulletin_tender_agency_code` (`tender_agency_code`(191)),
	  KEY `INDEX_ON_PROVINCE_NAME` (`province_name`),
	  KEY `INDEX_ON_TITLE` (`title`(255))
	) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='小程序展示的公告数据'
	 partition by RANGE columns(create_date)
	(
		partition p0 values less than ('2019-01-01'),
	  partition p1 values less than ('2019-02-01'),
	  partition p2 values less than ('2019-03-01'),
	  partition p3 values less than ('2019-04-01'),
	  partition p4 values less than ('2019-05-01'),
	  partition p5 values less than ('2019-06-01'),
	  partition p6 values less than ('2019-07-01'),
	  partition p7 values less than ('2019-08-01'),
	  partition p8 values less than ('2019-09-01'),
	  partition p9 values less than ('2019-10-01'),
	  partition p10 values less than ('2019-11-01'),
	  partition p11 values less than ('2019-12-01'),
	  partition p12 values less than ('2020-01-01')
	 
	)

mysqlserver的文件夹张这样子
每一个分区都是独立的文件去存放数据
当需要更多的分区的时候

	ALTER  TABLE  mini_app_bulletin  ADD  partition
	(
	  partition p13 values less than ('2020-02-01')
	)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值