在Oracle中,使用分区表是一种很自然的事情,数据库容量基本都是500G起,大小在5T以上都是很常见的。
分区就是将表的数据按照特定规则存放在不同的区域,也就是将表的数据文件分割成多个小块,在查询数据的时候,只要知道数据数据存储在哪些区域,然后直接在对应的区域进行查询,不需要对表数据进行全部的查询,提高查询的性能。同时,如果表数据特别大,一个磁盘磁盘放不下时,我们也可以将数据分配到不同的磁盘去,解决存储瓶颈的问题,利用多个磁盘,也能够提高磁盘的IO效率,提高数据库的性能。常见的分区类型有:Range分区、List分区、Hash分区、Key分区:
这是学习笔记的第 2431篇文章 赶个晚集,OceanBase发布会也有些天了,现场的感觉还是蛮好的,把整理的照片也发上来,供参考。 有组织和甲方站台。 有兄弟单位捧场 CEO站台 三地同时发布 现场压测,这个感觉很刺激。 阳振坤老师站台。 最喜欢这种情怀。 各大平台都可以找到我 微信公众号:杨建荣的学习笔记 Github:@jeanron100 CSDN:@jeanron100 知乎:@jeanron10
Hive也有decimal类型,并且可以指定长度,最好指定长度吧。刚开始以为Hive的decimal类型和MySql一致。后来发现想错了,还是个大坑!
1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引、如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。
1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。
1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。
1、因为任何有业务含义的列都有改变的可能性,主键一旦带上了业务含义,那么主键就有可能发生变更。主键一旦发生变更,该数据在磁盘上的存储位置就会发生变更,有可能会引发页分裂,产生空间碎片。
mysql支持的分区类型包括Range、List、Hash、Key,其中Range比较常用:
这是学习笔记的第 2300篇文章 最近在听得到头条的时候,有一篇内容感觉很不错,是《怎样当好一名外卖骑手》,本来是的带着一丝的娱乐意味来听的,没想到确实让我有了新的认识。 我整理了下思路,打算和大家简单聊聊。 我会按照两个维度来聊关于外卖骑手这件事,分别是: 1)打破认知思维,重新看待外卖骑手 2)如何在长期,持续的跑单工作中提效。 首先是打破认知思维,重新看待外卖骑手,这里我没有职业歧视,偶尔会和外卖小哥聊一下,发现他们全年几乎无休,总是在争分夺秒。换了一个思路来看,外卖骑手这个职业只要勤劳
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /itcast/
我们希望根据 timestamp 的日期进行分区, id 作为主键. 由于分区键必须是主键, 所以我们将 timestamp 加入主键中.
1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;
这是学习笔记的第 2432篇文章 首先来说下让人绝望的熵增定律, 引用混子哥的解读。 我们的生活和工作是如此,个人知识库和总结也是如此,最初是缺少一些素材,所以没有分类的烦恼,想怎么弄怎么弄,算是从0到1,而随着数量和质量的积累,会发现原来的玩法不行了,如果要搜索一些关键字,对于目录结构在脑子里得记个大概。我现在有近4000多的笔记和零零散散整理收集的内容,这个数量其实是比较庞大的,如何管理和归类这些内容就是摆在我面前的一个重要挑战,否则个人知识库就好像一潭死水一样,没有活力。 我也参
对于节假日,难得的假期,尤其是外出的时候碰上几个数据库报警,那些报警又属于不得不处理的时候,真是让人上火,所以也想了一些办法来尽可能杜绝和避免这种情况。
其实网上有很多写的很好的sql优化文章,全面细致,但是都遗漏了一个问题,只教了大家怎么治病,没教怎么看病,这就好比一个饱读医书的大夫,病人往这一坐,望闻问切全都不会,一身的本事不知道该用哪个?
之前一直使用mysql作为存储数据库,虽然中间偶尔使用sqlite作为本地数据库存储,hive作为简单查询工具,maxcompute作为大数据查询服务等等,但没有感觉多少差别。事实上,我们往往听说SQL-92标准之类的云云!
这是学习笔记的第 2430篇文章 最近一段时间解决了两个持续了多年的问题,想起来感觉自己还是挺蠢的。 第一件事情是关于邮件的,之前公司都是使用Outlook来管理邮件,我一般会把邮件归档下来,生成.pst文件,时不时能够回味下工作中的一些事情,也是一种难得的回忆。我们现在一直在用Foxmail,所以要把Outlook中的.pst文件导入到Foxmail就好像是一座大山摆在我面前,首先我尝试下载Outlook,结果因为版权的事情而无奈放弃了,其中还有很大的一部分原因是我尝试安装貌似和WPS冲突而导
B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的
mysql高并发的解决方法有:优化SQL语句,优化数据库字段,加缓存,分区表,读写分离以及垂直拆分,解耦模块,水平切分等。
这是学习笔记的第 2411篇文章 今天和同事在聊天的时候,我们谈到了一个有意思的问题,那就是对于工作的业务价值和技术价值的衡量。具体的维度和考量就不细说了,大体的意思有两点:首先是不要什么事情都需要上纲上线,时间长了难免会焦虑,都想往价值上去靠,挖空心思包装自己的说法,会更让自己陷入迷茫之中;第二是得有一个轴,也就是我们在一段时间里做事情,一定是有轻重缓急,那么这个核心的轴我们得把握中,而且得把握平衡,否则就是撒芝麻,没有轻重,全是碎片化。 同时在我的观察中,我发现很多职场老鸟都在如下的几个方面存在或多
这是学习笔记的第 2409篇文章 最近在琢磨一个问题,那就是我们每天上下班的路上会接收大量的信息,但是经过时间的沉淀之后,能够留下来的信息是少之又少,这一点让我很焦虑。 像开车上下班的路上,我有时候会听一些访谈和解读,带给我最大的收获是听起来有道理,但是要让我说个一二三,就感觉词穷了,而过了一段时间之后,其实这种听的效果跟没听没什么差别。 对此我做过一些尝试,比如我在路上听《冬吴同学会》,会听个大概,等到公司之后的时候就会找一下相应的文字版,从大段的文字中找到要点和观点,但是这种
这是学习笔记的第 2417篇文章 今天和研发团队沟通一个数据存储方案的设计和改造,大体的背景是在数据库中有些id类数据,如果数据类型是int,则存在一定的溢出风险,在程序层面需要提前考虑修改为int64,在MySQL中可以简单理解为bigint. 我们假设这个id字段为uid,如果是用户业务,则很多业务逻辑都是和这个uid强相关的,那么就会存在大量的业务梳理和研发代码的接入,如果底层数据存储的压力和风险过大,则这个事情的改进周期和影响范围就会更难以评估和控制。 所以这个问题从长期来看是未
目前一共包含6个脚本,若脚本的扩展名为“.sql”则表示该脚本为sql脚本,若脚本的扩展名为“.pl”则表示该脚本为perl脚本。
今天脑海里蹦出了一个词“周期”,对的,周期。我觉得好像是一只无形的手,像是路口的红绿灯,路边的指示牌,能够通过这些规则的变化让交通秩序稳中有序。
文章摘要:一个小小的MySQL数据库B-Tree索引可能会带来意想不到的性能优化提升……
上篇文章说了,mysql优化器会从cpu和io成本来考虑查询的消耗,possible key来计算全表和索引的成本,选择成本最小的,子查询有物化和semi-join半连接的方式优化,物化会优先哈希索引memory存储引擎,如果数据量太大会选择b+树。
当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。
基于 Hadoop 的一个数据仓库工具: hive本身不提供数据存储功能,使用HDFS做数据存储, hive也不分布式计算框架,hive的核心工作就是把sql语句翻译成MR程序 hive也不提供资源调度系统,也是默认由Hadoop当中YARN集群来调度 可以将结构化的数据映射为一张数据库表,并提供 HQL(Hive SQL)查询功能
为什么要分表 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。 mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。 mysql proxy:amoeba 做mysql集群,利用amoeba。 从上层的java程序来讲,不需要知道主服务器和从服务器的来源,即
MySQL单条SQL是单线程的,只能跑满一个core,ClickHouse相反,有多少CPU,吃多少资源,所以飞快; ClickHouse不支持事务,不存在隔离级别。这里要额外说一下,有人觉得,你一个数据库都不支持事务,不支持ACID还玩个毛。ClickHouse的定位是分析性数据库,而不是严格的关系型数据库。又有人要问了,数据都不一致,统计个毛。举个例子,汽车的油表是100%准确么?为了获得一个100%准确的值,难道每次测量你都要停车检查么?统计数据的意义在于用大量的数据看规律,看趋势,而不是100%准确。 IO方面,MySQL是行存储,ClickHouse是列存储,后者在count()这类操作天然有优势,同时,在IO方面,MySQL需要大量随机IO,ClickHouse基本是顺序IO。 有人可能觉得上面的数据导入的时候,数据肯定缓存在内存里了,这个的确,但是ClickHouse基本上是顺序IO,用过就知道了,对IO基本没有太高要求,当然,磁盘越快,上层处理越快,但是99%的情况是,CPU先跑满了(数据库里太少见了,大多数都是IO不够用)。 二、创建库
mysql> Create table engine1(id int) engine=innodb partition by range(id)(partition po values less than(10));
这是学习笔记的第 2421篇文章 有时候想起一些工作和生活中的改变自己的机会还是蛮有意思的,绝对不是标榜所谓的成功,因为我远远达不到,仅仅是对我个人来说,回过头来看这些转折点都很偶然,有些场景到现在都难以关联起来,但是结果就是如此。所以,我觉得我们工作中不要有太强的功利性,需要多一些耐心,保持好奇心。 比如我2009毕业后工作的第一家公司,是在一个社会招聘会中碰到的,当时大环境不好,就业形势还是比较严峻的。我在诺大的会场中转来转去,没有方向,基本都是一些偏技术支持的岗位多一些,当时这家招聘的要
普通索引:(index) 对关键字没有要求,如果一个索引在多个字段提取关键字,称为复合索引
对于分区表的检索无非有两种,一种是带分区键,另一种则不带分区键。一般来讲检索条件带分区键则执行速度快,不带分区键则执行速度变慢。这种结论适应于大多数场景,但不能以偏概全,要针对不同的分区表定义来写最合适的 SQL 语句。用分区表的目的是为了减少 SQL 语句检索时的记录数,如果没有达到预期效果,则分区表只能带来副作用。接下来我列举几个经典的 SQL 语句:
在使用hive-2.1.0的过程中使用desc tableName或者show create table tableName发现comment出现中文乱码问题。需要对hive作出修改并重新打包
Fayson 在前面的文章《Hive表字段Comment中文乱码》中,介绍了在Hive中如何解决表字段中文注释乱码的问题,为了完善上篇文档,本文整理Hive表所有与中文注释相关的属性项,包括表字段、分区、表名、视图中文乱码,同时包括对该问题的分析。
这个系列属于个人学习网易云课堂MySQL数据库工程师微专业的相关课程过程中的笔记,本篇为其“MySQL业务优化与设计”中的MySQL数据类型相关笔记。
1.对于 bigint 类型,如果不为 NULL,则占用8字节,首位为符号位,剩余位存储数字,数字范围是 -2^63 ~ 2^63 - 1 = -9223372036854775808 ~ 9223372036854775807。如果为 NULL,则不占用任何存储空间。
这是学习笔记的第 2407篇文章 最近在梳理工作的时候,做了一些小结。 首先是对于工作情况的量化,如果我们只是说自己做了什么什么事情,可能洋洋洒洒几十页ppt,也会让别人看得云里雾里,如果不是这个专业方向的人,基本都会有点晕菜,所以对于这个事情的抓手就是需要有一个参考基准,有了这个基准,你所做的事情都有一个对比,到底是多了还是少了,多了多少,少了多少,具体哪些多了,哪些少了都可以通过数字量化得到答案。 比如对于数据库服务能力的量化,我是选用了信通院开发的这个模型,通过评估惊人的发现我们做
分库分区分表概念 分区 就是把一张表的数据分成N个区块,在逻辑上看最终只是一张表,但底层是由N个物理区块组成的 。 分表 就是把一张数据量很大的表按一定的规则分解成N个具有独立存储空间的实体表。系统读写时需要根据定义好的规则得到对应的字表明,然后操作它。表名可以按照某种业务hash进行映射。 分库 一旦分表,一个库中的表会越来越多。 下面来具体看看 分区 mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三
对于分区表的检索无非有两种,一种是带分区键,另一种则不带分区键。一般来讲检索条件带分区键则执行速度快,不带分区键则执行速度变慢。这种结论适应于大多数场景,但不能以偏概全,要针对不同的分区表定义来写最合适的SQL语句。用分区表的目的是为了减少SQL语句检索时的记录数,如果没有达到预期效果,则分区表只能带来副作用。
领取专属 10元无门槛券
手把手带您无忧上云