导航:首页 > 网络数据 > optimizetable大数据

optimizetable大数据

发布时间:2023-12-24 10:10:55

『壹』 什么是MySql数据库

MySQL数据库:

『贰』 为什么postgrelsql的性能没有mysql好

一、 PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多 MySQL 用户都遇到过Server级的数据库丢失的场景——mysql系统库是MyISAM的,相比之下,PG数据库这方面要好一些。
二、任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而 MySQL 明显出现一个波峰后下滑(5.5版本之后,在企业级版本中有个插件可以改善很多,不过需要付费)。
三、PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型,相比之下mysql就差很多,instagram就是因为PG的空间数据库扩展POSTGIS远远强于MYSQL的my spatial而采用PGSQL的。

四、PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。
五、PG 的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。
六、PG有极其强悍的 SQL 编程能力(9.x 图灵完备,支持递归!),有非常丰富的统计函数和统计语法支持,比如分析函数(ORACLE的叫法,PG里叫window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MYSQL就差的很远,很多分析功能都不支持,腾讯内部数据存储主要是MYSQL,但是数据分析主要是HADOOP+PGSQL。
七、PG 的有多种集群架构可以选择,plproxy 可以支持语句级的镜像或分片,slony 可以进行字段级的同步设置,standby 可以构建WAL文件级或流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。
八、一般关系型数据库的字符串有限定长度8k左右,无限长 TEXT 类型的功能受限,只能作为外部大数据访问。而 PG 的 TEXT 类型可以直接访问,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库都可以省了。
九,对于WEB应用来说,复制的特性很重要,mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate,是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时,pgsql还提供stream复制。
十,pgsql对于numa架构的支持比mysql强一些,比MYSQL对于读的性能更好一些,pgsql提交可以完全异步,而mysql的内存表不够实用(因为表锁的原因)

最后说一下我感觉 PG 不如 MySQL 的地方。
第一,MySQL有一些实用的运维支持,如 slow-query.log ,这个pg肯定可以定制出来,但是如果可以配置使用就更好了。
第二是mysql的innodb引擎,可以充分优化利用系统所有内存,超大内存下PG对内存使用的不那么充分,
第三点,MySQL的复制可以用多级从库,但是在9.2之前,PGSQL不能用从库带从库。
第四点,从测试结果上看,mysql 5.5的性能提升很大,单机性能强于pgsql,5.6应该会强更多.
第五点,对于web应用来说,mysql 5.6 的内置MC API功能很好用,PGSQL差一些。

另外一些:
pgsql和mysql都是背后有商业公司,而且都不是一个公司。大部分开发者,都是拿工资的。
说mysql的执行速度比pgsql快很多是不对的,速度接近,而且很多时候取决于你的配置。
对于存储过程,函数,视图之类的功能,现在两个数据库都可以支持了。
另外多线程架构和多进程架构之间没有绝对的好坏,oracle在unix上是多进程架构,在windows上是多线程架构。
很多pg应用也是24/7的应用,比如skype. 最近几个版本VACUUM基本不影响PGSQL 运行,8.0之后的PGSQL不需要cygwin就可以在windows上运行。
至于说对于事务的支持,mysql和pgsql都没有问题。

『叁』 大数据开发工程师Hive(Hive如何进行优化)

1数据存储及压缩优化

针对hive中表的存储格式通常有textfile和orc,压缩格式一般使用snappy。相比于 textfile格式存储,orc占有更少的存储。因为hive底层使用MR计算架构,数据流是hdfs到磁盘再到hdfs,而且会有很多次IO读写操作,所以使用orc数据格式和snappy压缩策略可以降低IO读写,还能降低网络传输量,这样在一定程度上可以节省存储空间,还能提升hql的执行效率;

2 Hive Job优化

①调节Jvm参数,重用Jvm;

②合理设置Map个数;

③合理设置Rece个数;

3 Sql语法优化

建表优化

1) Hive创建表的时候,可以建分区表,分桶表;

2) Hive创建表的时候,可以指定数据存储格式:TextFile、SequenceFile、RCfile 、ORCfile;

查询时优化

1) 列裁剪,在查询时只读取需要的列,避免全列扫描,不要使用select * from table;

2) 分区裁剪:在查询时只读取需要分区的数据,避免全表扫描;

3) 开启谓词下推:set hive.optimize.ppd = true,默认是true:

a. 将Sql语句中的where谓词逻辑都尽可能提前执行,减少下游处理的数据量;

4) 大哪陵表join小表:

a. 开启MapJoin:set hive.auto.convert.join=true:

b. MapJoin是将Join双方比较小的那个表直接分发到各个Map进程的内存亩弊中,在 Map进程中进行Join操作, 这样就不用进行Rece步骤 ,从而提高了速度( 大表left join小表才有效 ,小表left join大表会失效);

5) 大表join大表:

a. SMB Join :Sort Merge Bucket Join(数据不仅分桶了,而且每个桶数据是排好序了);

b. 开启SMB Join之后,底层是根据两个表join字段进行分桶存储,这样迅缓族的话,两张表就变为了基于桶之间join关联查询,而不是基于整张表的join,减少了笛卡尔积;

6) 少用in,用left semi join替代in:

a. 原始写法:select a.id, a.name from a where a.id in (select b.id from b);

b. 用join改写:select a.id, a.name from a join b on a.id = b.id;

c. left semi join改写:select a.id, a.name from a left semi join b on a.id = b.id;

7) 用union all代替union,因为union all不需要去重,也不需要排序,效率高于union;

(每天1小题,进步1点点)

阅读全文

与optimizetable大数据相关的资料

热点内容
老炮儿三小时版本下载 浏览:313
matlab怎么调试程序 浏览:2
winxp升级win7的危害 浏览:496
网络没连上却不可用是怎么回事 浏览:752
社区版本 浏览:738
怎么查微信公众号什么时候开通的 浏览:717
安装三菱编程闪退怎么回事 浏览:488
手机怎么创建word文件格式 浏览:694
c语言连接数据库 浏览:887
数据线粉色和白色哪个是正 浏览:775
vb编程应注意什么 浏览:855
js循环添加控件 浏览:615
学习计算机网络的作用 浏览:235
access数据库最新内容怎么调 浏览:203
上古世纪新版本跑商 浏览:267
iphone5国际漫游设置 浏览:107
ipodwatch如何安装app 浏览:114
谁有微信抢红包的群号 浏览:872
word07页码从任意页开始 浏览:791
js禁止滑动事件 浏览:800

友情链接