对于INNODB,主键就是聚集索引,如果没有主键定义,则第一个唯一非空索引被作为聚集索引.
如果没有主键也没有合适的唯一索引,那么innodb内部会生成一个隐藏的主键作为聚集索引,
这个隐藏的主键类似一个自增的id(int).

删除与重新添加主键
alter table tbname drop primary key;

alter table tbname add primary key(col1,col2,col3);

CREATE INDEX IDX_METE_BASE_AREA_STATION_CABINET ON CMS.T_CABINET_ELECTRICITY_HH_HIVE (
BASE_NAME ASC,
AREA_NAME ASC,
STATION_NAME ASC,
CABINET_NAME ASC
);

SELECT DISTINCT DEVICE_NAME ,REGEXP_EXTRACT(DEVICE_NAME,"-(.*)",0)
FROM T_METE_CONFIG
WHERE LSC_ID IN (30,31)
AND DEVICE_TYPE_NAME='UPS配电'
AND STATION_NAME LIKE '%数据机房%'
ORDER BY DEVICE_NAME;

SELECT REGEXP_EXTRACT('ASDFSADF-JOB','-([A-Z])',0) FROM CMS.DUAL LIMIT 1;

复合分区示例,
先以时间粒度天为例进行外分区,然后根据地域id进行分区,
mysql仅支持range和list的子分区,而且子分区只能是hash或key.

CREATE TABLE t_cabinet_electricity_hh_hive2
(
   base_id int NOT NULL,
   base_name varchar(20),
   lsc_name varchar(255),
   area_id bigint,
   area_name varchar(255),
   station_id int NOT NULL,
   station_name varchar(255),
   device_type_id varchar(255),
   device_type_name varchar(255),
   device_id varchar(255) NOT NULL,
   device_name varchar(255),
   mete_id int NOT NULL,
   mete_name varchar(255),
   max_report_time varchar(20),
   max_mete_value double,
   min_report_time varchar(20),
   min_mete_value double,
   avg_mete_value double,
   hour_sum_value double,
   hour_times int,
   dt_hh varchar(10) NOT NULL,
   hour_last_value double,
   cabinet_name varchar(255),
   dt varchar(20) NOT NULL,
   lsc_id int NOT NULL,
   PRIMARY KEY (dt,dt_hh,base_id,lsc_id,mete_id,device_id,station_id,mete_name)
)
PARTITION BY RANGE(TO_DAYS(DT))
SUBPARTITION BY HASH(LSC_ID)
SUBPARTITIONS 6
(
PARTITION P0  VALUES LESS THAN (TO_DAYS('20170810')),
PARTITION P1  VALUES LESS THAN (TO_DAYS('20170811')),
PARTITION P2  VALUES LESS THAN (TO_DAYS('20170812')),
PARTITION P3  VALUES LESS THAN (TO_DAYS('20170813')),
PARTITION P4  VALUES LESS THAN (TO_DAYS('20170814')),
PARTITION P5  VALUES LESS THAN (TO_DAYS('20170815')),
PARTITION P6  VALUES LESS THAN (TO_DAYS('20170816')),
PARTITION P7  VALUES LESS THAN (TO_DAYS('20170817')),
PARTITION P8  VALUES LESS THAN (TO_DAYS('20170818')),
PARTITION P9  VALUES LESS THAN (TO_DAYS('20170819')),
PARTITION P10  VALUES LESS THAN (TO_DAYS('20170820'))
)
;

ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P11  VALUES LESS THAN (TO_DAYS('20170821')));         
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P12  VALUES LESS THAN (TO_DAYS('20170822')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P13  VALUES LESS THAN (TO_DAYS('20170823')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P14  VALUES LESS THAN (TO_DAYS('20170824')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P15  VALUES LESS THAN (TO_DAYS('20170825')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P16  VALUES LESS THAN (TO_DAYS('20170826')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P17  VALUES LESS THAN (TO_DAYS('20170827')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P18  VALUES LESS THAN (TO_DAYS('20170828')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P19  VALUES LESS THAN (TO_DAYS('20170829')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P20  VALUES LESS THAN (TO_DAYS('20170830')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P21  VALUES LESS THAN (TO_DAYS('20170831')));
ALTER TABLE t_cabinet_electricity_hh_hive2 ADD PARTITION (PARTITION P22  VALUES LESS THAN (TO_DAYS('20170901')));
        
--查看分区信息
select
partition_name,table_rows
from information_schema.partitions where table_name='xxx';
 
 
问题,hive表中的日期类型 yyyy-mm-dd 到mysql中对应的date字段,但是无法导入成功
其实看sqoop转换的java代码,可以看出这是sqoop的一个bug.,
里面有类似 (java.sql.Date)value
转换失败为空,这样进入我含有非空约束的字段就失败了.
原因是日期格式是不确定的,所以直接转有问题,
建议是直接设置临时表的字段为varchar,后面带做处理.

sqoop eval --connect jdbc:mysql://xx:3306/cms --username root --password xxx \
--query "truncate table xx.stage_t_xx"

sqoop export --connect jdbc:mysql://xxx:3306/xxx\
--username root --password xxx --table stage_t_xxe \
--hcatalog-database xxx--hcatalog-table stage_txxx

sqoop eval --connect jdbc:mysql://xxx:3306/cms --username root --password xxx \
--query "insert into xxx.t_xxx_xx_hh_xx select * from xxx.stage_t_xx_xx_hh_hive"

mysql调优小记的更多相关文章

  1. MySQL 调优/优化的 100 个建议

    MySQL 调优/优化的 100 个建议   MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定 ...

  2. MySQL 调优基础(一) CPU与进程

    一般而言,MySQL 的调优可以分为两个层面,一个是在MySQL层面上进行的调优,比如SQL改写,索引的添加,MySQL各种参数的配置:另一个层面是从操作系统的层面和硬件的层面来进行调优.操作系统的层 ...

  3. MySQL调优系列基础篇

    前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...

  4. mysql调优 基础

    MySQL调优可以从几个方面来做: 1. 架构层:做从库,实现读写分离: 2.系统层次:增加内存:给磁盘做raid0或者raid5以增加磁盘的读写速度:可以重新挂载磁盘,并加上noatime参数,这样 ...

  5. mysql调优最大连接数

    一.mysql调优 1.1 报错: Mysql: error 1040: Too many connections 1.2 原因: 1.访问量过高,MySQL服务器抗不住,这个时候就要考虑增加从服务器 ...

  6. MySQL调优 —— Using temporary

      DBA发来一个线上慢查询问题. SQL例如以下(为突出重点省略部分内容): select distinct article0_.id, 等字段 from article_table article ...

  7. 数据库MySQL调优实战经验总结<转>

    数据库MySQL调优实战经验总结 MySQL 数据库的使用是非常的广泛,稳定性和安全性也非常好,经历了无数大小公司的验证.仅能够安装使用是远远不够的,MySQL 在使用中需要进行不断的调整参数或优化设 ...

  8. MySQL调优 优化需要考虑哪些方面

    MySQL调优 优化需要考虑哪些方面   优化目标与方向定位 总体目标:使得响应时间更快,吞吐量更大. (throughout --- 吞吐量:单位时间内处理事务的数量) 如何找到需要优化的地方 使用 ...

  9. MySQL调优系列_日志分析

    前言 本篇主要总结一下MySQL数据库的几种日志,用于日常维护过程中问题解决和性能优化等,稍显基础,日常积累之用. 文章的部分内容会将MySQL数据库和SQL Server数据库部分内容做一个对比,非 ...

随机推荐

  1. Nuget包制作最佳解决方案

    https://www.cnblogs.com/drea/p/8418717.html 最近研究ABP框架,下载其全套源码,想“据为己有”,这样添加功能或者修改源码的话就非常方便了,否则搭建项目直接用 ...

  2. shell脚本学习总结11--脚本调试

    参数: -n    不执行脚本,仅检查语法是否错误 -v    将脚本内容输出到屏幕上,然后执行脚本 -x   执行脚本,并将内容输出到屏幕 -n [root@new sbin]# sh -n deb ...

  3. iOS开发经验总结(一)

    本文转载至 :http://dreamahui.iteye.com/blog/1878650 软件开发方面 1.  在每个页面的入口和出口(一般是viewDidLoad和dealloc)打上日志,可以 ...

  4. U盘插入拔出提示

    Unit Unit1; Interface Uses Windows, Messages, SysUtils, Variants, classes, Graphics, Controls, Forms ...

  5. PMP私有广告交易市场

    [资源]互联网广告新知:半小时读懂PMP私有广告交易市场是什么? https://socialbeta.com/t/resource-what-is-pmp.html SocialBeta | 201 ...

  6. Storm-源码分析- Disruptor在storm中的使用

    Disruptor 2.0, (http://ifeve.com/disruptor-2-change/) Disruptor为了更便于使用, 在2.0做了比较大的调整, 比较突出的是更换了几乎所有的 ...

  7. 如何查看电脑最大支持多少GB内存

    第一种方法: 1.打开“开始”菜单,点击“运行”按钮,也可以直接使用[Win + R]组合快捷键打开, 在弹出来的窗口输入“CMD”,然后确定或者按下回车键 2.在命令窗口输入“wmic memphy ...

  8. 自建YUM仓库

    YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系. 要成功的使用YUM工具安装更新软件或系统,就需要有一个包含各种rpm软件包的repository(软件仓库),这个 ...

  9. embedded-redis在单元测试中的使用

    1 背景 参考链接:https://github.com/kstyrc/embedded-redis 2 使用 2.1 引入依赖 <dependency> <groupId>c ...

  10. SQLALchemy的其他常用操作

    使用连接池的两种方式 第一种方式: 直接从SessionFactory里获取,此时如果需要开启多个进程,那么创建连接池的代码一定要放在循环里面 不然的话每个进程都是用一个session了 from s ...