一、背景学习Hadoop时接触的第一个样例就是wordcount,即统计文本中词的数量。各种BI、营销产品中不可或缺的模块就是统计报表。在常见的搜索分页模块,也需要提供总记录数。统计在SQL引擎中可谓最基础、最核心的能力之一。可能由于它太基础了,就像排序一样,我们常常会忽视它背后的原理。通常的计数是非常简单的,例如统计文本行数在linux系统上一个wc命令就搞定了。除了通常的计数,统计不重复元素个数的需求也非常常见,这种统计称为基数统计。对于Presto这种分布式SQL引擎,计数的实现原理值得深入研究,特别是基数统计。关于普通计数和基数计数,最典型的例子莫过于PV/UV。二、基数统计主要算法在
统计一个表的数据量是经常遇到的需求,但是不同的表设计及不同的写法,统计性能差别会有较大的差异,下面就简单通过实验进行测试(大家测试的时候注意缓存的情况,否则影响测试结果)。一、准备工作为了后续测试工作的进行,先准备几张用于测试的表及数据,为了使测试数据具有参考意义,建议测试表的数据量大一点,以免查询时间太小,因此,可以继续使用之前常用的连续数生成大法,如下:/*创建连续数表*/CREATETABLEnums(idINTprimarykey);/*生成连续数的存储过程,优化过后的*/DELIMITER$$CREATEPROCEDURE`sp_createNum`(cntINT)BEGINDECL
统计一个表的数据量是经常遇到的需求,但是不同的表设计及不同的写法,统计性能差别会有较大的差异,下面就简单通过实验进行测试(大家测试的时候注意缓存的情况,否则影响测试结果)。一、准备工作为了后续测试工作的进行,先准备几张用于测试的表及数据,为了使测试数据具有参考意义,建议测试表的数据量大一点,以免查询时间太小,因此,可以继续使用之前常用的连续数生成大法,如下:/*创建连续数表*/CREATETABLEnums(idINTprimarykey);/*生成连续数的存储过程,优化过后的*/DELIMITER$$CREATEPROCEDURE`sp_createNum`(cntINT)BEGINDECL
前言大家好,我是田螺。金三银四已经开始啦,准备了SQL优化的13连问,内容非常干!相信大家看完一定会有帮助的。1.日常工作中,你是怎么优化SQL的?大家可以从这几个维度回答这个问题:分析慢查询日志使用explain查看执行计划索引优化深分页优化避免全表扫描避免返回不必要的数据(如select具体字段而不是select*)使用合适的数据类型(如可以使用int类型的话,就不要设计为varchar)优化sql结构(如join优化等等)适当分批量进行(如批量更新、删除)定期清理无用的数据适当分库分表读写分离2.是否遇到过深分页问题,如何解决我们可以通过减少回表次数来优化。一般有标签记录法和延迟关联法。
前言大家好,我是田螺。金三银四已经开始啦,准备了SQL优化的13连问,内容非常干!相信大家看完一定会有帮助的。1.日常工作中,你是怎么优化SQL的?大家可以从这几个维度回答这个问题:分析慢查询日志使用explain查看执行计划索引优化深分页优化避免全表扫描避免返回不必要的数据(如select具体字段而不是select*)使用合适的数据类型(如可以使用int类型的话,就不要设计为varchar)优化sql结构(如join优化等等)适当分批量进行(如批量更新、删除)定期清理无用的数据适当分库分表读写分离2.是否遇到过深分页问题,如何解决我们可以通过减少回表次数来优化。一般有标签记录法和延迟关联法。
有些时候,改进数据表查询性能的最佳方式是在同一张数据表中冗余一些继承的数据。然而,有些时候需要新建完全独立的统计或缓存数据表,尤其是在需要反复查询的需求情况下。如果业务允许一些时间上的误差的话,那么这种方式会更好。缓存型数据表通常在统计数据时会经常用到,因此也会叫统计性数据。举个例子来说,对于员工、部门数据表而言,我们可能会需要查询一个部门下有多少员工。这时候有三种方式实现:在部门下增加一个员工数量的字段,每次对员工进行增、改、删操作时都需要同步更新员工数量(如果员工换部门,则需要更新多个部门的员工数量)。这种方式能够保证实时性,但是却很低效。对于如果是操作不频繁时是没问题的,假设相当频繁,就
有些时候,改进数据表查询性能的最佳方式是在同一张数据表中冗余一些继承的数据。然而,有些时候需要新建完全独立的统计或缓存数据表,尤其是在需要反复查询的需求情况下。如果业务允许一些时间上的误差的话,那么这种方式会更好。缓存型数据表通常在统计数据时会经常用到,因此也会叫统计性数据。举个例子来说,对于员工、部门数据表而言,我们可能会需要查询一个部门下有多少员工。这时候有三种方式实现:在部门下增加一个员工数量的字段,每次对员工进行增、改、删操作时都需要同步更新员工数量(如果员工换部门,则需要更新多个部门的员工数量)。这种方式能够保证实时性,但是却很低效。对于如果是操作不频繁时是没问题的,假设相当频繁,就
统计学方法:T-test:用于两组间相互比较:1、paired:是同一个组前后变化(同一个体)2、unpaired:是实验组和对照组间的比较(有个体差异,即使是同一个细胞系,但是进行了不同的处理)t-test+onewayANOVA:选择column进行分析onewayANOVA三种细胞系两个质粒的单因素分析要用group画图用onewayANOVA统计分析。如果多因素就用multi-wayANOVA(组间和组内比较的分析)one-wayANOVA:如果是三个细胞系相同处理则用twowayANOVA:因为有两种细胞系和转染质粒两个因素影响errorbar:分离棒SD:standarddevia
统计学方法:T-test:用于两组间相互比较:1、paired:是同一个组前后变化(同一个体)2、unpaired:是实验组和对照组间的比较(有个体差异,即使是同一个细胞系,但是进行了不同的处理)t-test+onewayANOVA:选择column进行分析onewayANOVA三种细胞系两个质粒的单因素分析要用group画图用onewayANOVA统计分析。如果多因素就用multi-wayANOVA(组间和组内比较的分析)one-wayANOVA:如果是三个细胞系相同处理则用twowayANOVA:因为有两种细胞系和转染质粒两个因素影响errorbar:分离棒SD:standarddevia
1.火山图?之前瞥到了小明的跟着Cell学作图:R语言ggplot2作图展示差异表达的基因,但没有细看,根据印象做了下面这个图。差异表达结果合并awk'NR==1{print}FNR>1{print}'*vs0.txt>allvs0.txt在R中读取library(tidyverse)df_deg作图,其中不显示padj大于0.5的基因;df_deg的contrast列:1vs0|2vs0|3vs0|4vs0|5vs0,不同的组的差异表达结果;df_deg的change列:Up|Down|Stable,可根据log2FoldChange和padj定义;my_gene是我想突出的基因构成的向量。