前面我们分析了职场基本功、数据指标体系,少量的数据仓库内容,今天我们来就工作中经常遇到的数据维护问题,聊一下流量日志的维度表搭建思考。...历史导读: 小进阶:数据指标体系和数据治理的管理 小诀窍:不妨尝试从交付质量上打败对手 小尝试:基于指标体系的数据仓库搭建和数据可视化 以下,Enjoy: 0x01 问题场景描述 0x01 我遇见的问题场景描述...前面文章中我们提到过《基于指标体系的数据仓库搭建和数据可视化》,强调了指标体系对数据数据仓库搭建和数据可视化的必要性和重要性。
2.数据仓库的发展 数据仓库有两个环节:数据仓库的构建与数据仓库的应用。...下游应用根据业务需求选择直接读取DM或加一层数据服务,比如mysql 或 redis。...( 2)参考后面的案例 另外,随着数据多样性的发展,数据仓库这种提前规定schema的模式显得越来难以支持灵活的探索&分析需求,这时候便出现了一种数据湖技术,即把原始数据全部缓存到某个大数据存储上,后续分析时再根据需求去解析原始数据...5.实时数仓案例 菜鸟仓配实时数据仓库 本案例参考自菜鸟仓配团队的分享,涉及全局设计、数据模型、数据保障等几个方面。...开源提供类似功能的有,Elastic Search、Kylin、Druid等; 2.案例中选择把数据写入到Hbase供KV查询,也可根据情况选择其他引擎,比如数据量不多,查询压力也不大的话,可以用mysql
数据仓库的趋势: 实时数据仓库以满足实时化&自动化决策需求; 大数据&数据湖以支持大量&复杂数据类型(文本、图像、视频、音频); 2.数据仓库的发展 数据仓库有两个环节:数据仓库的构建与数据仓库的应用...下游应用根据业务需求选择直接读取DM或加一层数据服务,比如mysql 或 redis。...(2)参考后面的案例 另外,随着数据多样性的发展,数据仓库这种提前规定schema的模式显得越来难以支持灵活的探索&分析需求,这时候便出现了一种数据湖技术,即把原始数据全部缓存到某个大数据存储上,后续分析时再根据需求去解析原始数据...(3) 5.实时数仓案例 菜鸟仓配实时数据仓库 本案例参考自菜鸟仓配团队的分享,涉及全局设计、数据模型、数据保障等几个方面。 注:特别感谢缘桥同学的无私分享。...开源提供类似功能的有,Elastic Search、Kylin、Druid等; 2.案例中选择把数据写入到Hbase供KV查询,也可根据情况选择其他引擎,比如数据量不多,查询压力也不大的话,可以用mysql
今天发现网站页面打开非常慢,对处理过程简单记录了一下 找问题 首先登录服务器使用 top 查看当前进程信息,发现排名第一的是 mysql,占用 cpu 达到了 100% 以上,这就明确了是 mysql...的问题 登录 mysql,使用 show processlist 查看下当前执行状态,发现了大量 LOCK 操作,也有多个 Copying to tmp table 的操作,说明有 sql 出现了问题,...操作过于复杂,对临时表使用频繁,把其他操作阻塞了 解决 找到了问题后,把处理方向确定为 检查和修改配置、sql优化 (1)修改mysql配置 临时表 既然涉及了到了临时表,就先查看下目前临时表的信息 查看临时表的使用状态...; 在现在值的基础上增加一些,重新设置临时表大小 线程缓存数 看当前线程情况 show global status like 'Thread%'; 发现 threads_created 的值过大,表明MySQL...优化 从 show processlist 结果集中找出主要的复杂语句,对其进行 explain 和 profile 分析 进行索引优化,把复杂的sql 根据业务拆分为多个小的sql 以上过程完成后,mysql
) public void setAddress (String address) { HBaseConfig.address = address; } } 3、查询案例
往往会伴随着国庆期间业务要上相关的活动,那么今天就分享一个今年五一前夕(4月30日)上新活动中遇到的一个性能问题; 问题背景 五一前夕(4月30日)中午频繁的收到业务慢查询的告警 排查过程 查看mysql...tables in use 3, locked 3 LOCK WAIT 9186 lock struct(s), heap size 1220816, 13 row lock(s) MySQL thread...tables in use 3, locked 3 9180 lock struct(s), heap size 1220816, 5 row lock(s) MySQL thread id 299537...虽然性能上没多少影响,但比较好奇,在理解当中MySQL知识体系中是没有交集语法。...那么接下来看下表结构和索引结构: mysql >show create table dic_match_signup_userinfo_7\G *************************** 1
-124-34 data]# ll total 157854040 -rw-r----- 1 mysql mysql 362 Apr 26 2018 ib_buffer_pool -...rw-r----- 1 mysql mysql 2818572288 May 13 14:41 ibdata1 -rw-r----- 1 mysql mysql 158792155136 May 13...14:40 ibtmp1 drwxr-x--- 2 mysql mysql 4096 Apr 18 2018 infra drwxr-x--- 2 mysql mysql...4096 Apr 18 2018 mysql 经过系统优化和业务协调需要做MySQL实例重启,已重置为初始大小,设置阈值为10G。...测试步骤如下: create table dic_fsm_info3 (classid varchar(30),etime varchar(30)); --可以根据业务特点创建索引 mysql>
1.4 打标签 1.4.1 CLASSIFICATION分类 说明:按自己项目的需求划分不同得维度 1.4.2 GLOSSARY词汇表 说明:一个数据仓库项目有很多域,域下面还有很多层次,可以按自己项目需求规划
本文针对上一篇《MySQL优化案例分享》文章中提到的线上业务产生的一个死锁问题进行展开讨论,主要针对两个update操作导致的死锁的场景,借此机会正好总结下MySQL锁及分析下产生死锁的原因和解决方案;...首先,针对MySQL中提供的锁种类做一个简单的总结,关于更多MySQL锁相关的内容可参考官方文档; MySQL InnoDB存储引擎提供了如下几种锁: 1、共享/排他锁(S/X锁) 共享锁(S Lock...案例分析 MySQL版本:MySQL 5.7 隔离级别:RC Session1 Session2 T1 begin;select * from locktest where name=’test’ lock...tables in use 1, locked 1 LOCK WAIT 5 lock struct(s), heap size 1136, 3 row lock(s) MySQL thread id...MySQL之上加了一层redis缓存锁,防止多个事务同时更新一个数据,如果有其他的解决方法,欢迎大家留言讨论;
为什么需要数据建模 数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合。数据仓库中的数据需要进行有序、有结构地分类组织和存储。...全站行为数据仓库落地建设实践过程中,参考互联网行业内采用广泛的维度建模方法论,结合58商业自身特点,分析业务环境构造数据仓库底层数据基础,再按照实际的应用需求构造数据仓库上层数据的方式进行数据仓库的建设...全站行为数据仓库建设实践 下图为数据仓库中全站行为数据部分数据仓库体系架构图: _ _ ? _ _ 图1 全站行为数据架构图 1....全站行为数据仓库构建原则 全站行为数据仓库建设中,逐步借鉴和沉淀的数据仓库构建原则如下: (1) 底层业务的数据驱动为导向同时结合业务需求驱动。 (2) 便于数据分析。...数据仓库架构分层思想 数据仓库构建过程中,采用的分层思想,各层的功能及建模方式和原则介绍如下。
数据库的"分家" 随着关系数据库理论的提出,诞生了一系列经典的RDBMS,如Oracle,MySQL,SQL Server等。这些RDBMS被成功推向市场,并为社会信息化的发展做出的重大贡献。...~这就是关于数据仓库最贴切的定义了。事实上数据仓库不应让传统关系数据库来实现,因为关系数据库最少也要求满足第1范式,而数据仓库里的关系表可以不满足第1范式。...有了这些数据快照以后,用户便可将其汇总,生成各历史阶段的数据分析报告; 数据仓库组件 数据仓库的核心组件有四个:各源数据库,ETL,数据仓库,前端应用。如下图所示: ? 1....前端应用 和操作型数据库一样,数据仓库通常提供具有直接访问数据仓库功能的前端应用,这些应用也被称为BI(商务智能)应用; 数据集市(data mart) 数据集市可以理解为是一种"小型数据仓库",它只包含单个主题...数据仓库开发流程 在数据库系列的第五篇 中,曾详细分析了数据库系统的开发流程。数据仓库的开发流程和数据库的比较相似,因此本文仅就其中区别进行分析。 下图为数据仓库的开发流程: ?
前阶段体验 Mysql 的新版本 5.7.13,由于机器里已经有 Mysql了,再安装另一个版本会有一些麻烦,为了简单,便使用 Docker 容器来安装 可能有人会认为没必要,在一台机器安装多个 Mysql...容器启动后,就可以进入 ubuntu 的 shell,进行正常操作,例如 [root@8f6f3cad2 /]# (4)把Mysql安装包拷贝到容器中 在主机中下载好 Mysql 5.7.13 的安装包...(5)在容器中安装运行 Mysql 在 ubuntu shell 下正常执行 Mysql 的安装操作,安装完成后,运行 Mysql 然后添加一个可以远程访问的用户,例如 test,密码 111111 (...6)在主机中连接 Mysql 在主机中使用 Mysql 的客户端进行连接,连接信息: Host - 分配给Docker的IP(可通过 Docker命令获得) Username - test Password...- 111111 Port - 3307 这样,一个完全独立的 Mysql 就安装完了,这只是 Docker 的一个简单应用场景,Docker 非常实用,现在的应用范围已经相当广泛,以后会介绍更多的用法和案例
`comment`) AS `TABLE_COMMENT`FROM (((((`mysql`.`tables` `tbl` JOIN `mysql`....`id`))) JOIN `mysql`.`catalogs` `cat` ON ((`cat`.`id` = `sch`....`id`))) LEFT JOIN `mysql`.`tablespaces` `ts` ON ((`tbl`.`tablespace_id` = `ts`....`id`))) LEFT JOIN `mysql`.`table_stats` `stat` ON (((`tbl`.`name` = `stat`.....啰嗦一句再啰嗦一句, 上面的mysql.innodb_index_stats中的信息我们我们也可以使用ibd2sql_web去验证.
线上的SQL优化案例(一) 今天上班的时候,业务方询问了一个问题,说是某一服务每次在查询的时候会有0.5s的延迟,让DBA帮忙查一查到底是什么原因,听到0.5s的这个数字的时候,我感觉问题倒不是很严重...3、查看对应的表结构: mysql--dba_admin 12:59:09>>show create table account\G *************************** 1. row...| +-------------+ | 1 | +-------------+ 1 row in set (0.02 sec) mysql--dba_admin 12:02:25...改成单个字段的试试,这里我又把索引改成了: KEY `idx_accid` (`accountid`) 只保留一个字段,看看执行结果: mysql--dba_admin 13:12:17>>explain...建表语句如下: mysql--dba_admin 13:16:24>>show create table account\G *************************** 1. row ***
事实上 MySQL 本身就有 DDL 的监控手段吗,只是默认情况没有进行开启。 实践一下 测试环境使用了腾讯云数据库 MySQL 5.7,官方的 MySQL 8.0,5.7 版本基本同理。...首先需要打开performance_schema(腾讯云 MySQL 需要留意是否开启了这个参数),然后在setup_instruments表中开启 alter 操作对应的监控项以及p_f(performance_schema...table sbtest.sbtest1 modify c varchar(128) NOT NULL DEFAULT ''; 因为开启了 p_f 的参数,所以现在能在内存表里面看到具体的数据了: mysql...实际上运行的时间可以参考语句执行的具体时间: mysql> alter table sbtest.sbtest1 modify c varchar(120) NOT NULL DEFAULT '';...总结一下 其实 MySQL 自身已经集成了非常多的监控信息,有需求的时候可以多研究研究setup_instruments。
最近刚好也遇到了一个典型的死锁案例,本文会基于这个案例,做一次详细的分析与拆解。...问题描述 细节信息已脱敏,由于innodb engine status会记录最近一次死锁的细节信息,因此案例现场的信息是可以完整拿到的。...MySQL 的锁机制天然具备这个条件。 请求与保持条件:资源请求被阻塞时,已持有的资源不会被释放。 MySQL 不触发死锁回滚,且未进入 lockwait_timeout 的时候,具备这个条件。...所以只需要定位到具体锁的数据,找到循环等待的逻辑关系,就可以完成整个案例分析了。...而 trx2 持有的锁信息中,第一个刚好就是 trx1 等待的: [trx2 持有的锁] 那么关于这个死锁案例的具体场景,就可以用下有向环的图例进行说明: [死锁图例] 至此为止,这个死锁的案例分析就完成了
count(*)处理 想要优化count(*),首先得了解清楚,MySQL是如何处理count(*)的?在MySQL不同版本、不同存储引擎中,对于count(*)的处理方式,是存在差异的。..., 1 warning (0.00 sec) mysql> select count(*) from sbtest1; +----------+ | count(*) | +----------+ |...5.7.18之前版本,MySQL是通过扫描聚集索引(即全表扫描),来获取count(*)的结果 Prior to MySQL 5.7.18, InnoDB processes SELECT COUNT...5.7.18版本开始,MySQL会尽量选择扫描二级索引,来获取count(*)的结果 As of MySQL 5.7.18, InnoDB processes SELECT COUNT(*) statements...那么为什么MySQL要从扫描聚集索引优化成扫描二级索引呢?
昨天频繁的收到MySQL实例关于Aborted告警邮件,看到告警邮件的实例信息,测试实例,优先级没没那么高,晚点抽空在看,可能到时候就好了,抱着侥幸的心理继续划水,但是没过1个小时,收到50多封告警邮件...,实在受不了了,准备放下手头的事情优先处理该告警问题; 如下是告警邮件相关信息截图: 从告警看,是由于MySQL实例状态变量Aborted_connects不断增加导致的,正常情况下,该变量值应该保持...0 192.168.7.xxx:4306 10.21.1.28:6798 TIME_WAIT - 实例层面可以看到,Aborted_connects的值不断的增加 mysql...如下是官方文档针对该状态量的解释以及该变量不断增加可能产生的原因的说明: Aborted_connects The number of failed attempts to connect to the MySQL...,如上的四种情况会导致该变量值不断增加: 客户端尝试连接数据库,但是没有权限 客户端使用了错误的密码 连接的数据包包含不正确的信息 超过连接时间限制,主要有这个参数控制connect_timeout,mysql
背景 经常使用 MySQL 的话,会发现 MySQL 数据文件的磁盘空间一般会不停的增长,而且有时候删了数据或者插入一批数据的时候,磁盘空间有时候还会毫无变化。...引发这个其妙现象的就是 MySQL 的表空间碎片。 什么是表空间碎片?...:删除了日志表的很多数据,但是 MySQL 的磁盘空间并没有降低。...怎么查看表空间碎片 MySQL 的系统表记录了表空间的使用情况,可以用如下查询检查: SELECT CONCAT(table_schema,'.'...对于回收空间的问题 对一些日志表,或者是有区域性特征的表,建议使用 MySQL 的分区表来管理,需要清理一批数据的时候,可以用 partition truncate 的方式进行清理,磁盘空间也能直接释放掉
领取专属 10元无门槛券
手把手带您无忧上云