问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何设计一个方便高效查询的大容量的数据库结构

发布网友 发布时间:2022-05-01 13:54

我来回答

2个回答

懂视网 时间:2022-05-01 18:16

作者:方圆
链接:https://www.zhihu.com/question/20010554/answer/15863274
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

一、 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都没有问题。

 

MySQL 处理树状回复的设计会很复杂, 而且需要写很多代码, 而 Pg 可以高效处理树结构:  http://www.slideshare.net/quipo/trees-in-the-database-advanced-data-structures

它可以高效处理图结构, 轻松实现 "朋友的朋友的朋友" 这种功能:

FDW--它可以把 70 种外部数据源 (包括 Mysql, Oracle, CSV, hadoop ...) 当成自己数据库中的表来查询:  https://wiki.postgresql.org/wiki/FDW?nocache=1

技术分享

 

 

 

postgres数据库 性能测试:http://blog.csdn.net/bigbigtreewhu/article/details/51545288

postrgres数据库 高可用性,负载均衡,复制与集群方案介绍  : https://my.oschina.net/liuyuanyuangogo/blog/497746

如何选择高速存储、查询数据库

标签:方案   而且   tag   领域   这一   镜像   不能   问题   高可用性   

热心网友 时间:2022-05-01 15:24

1、把你表中经常查询的和不常用的分开几个表,也就是横向切分
2、把不同类型的分成几个表,纵向切分
3、常用联接的建索引
4、服务器放几个硬盘,把数据、日志、索引分盘存放,这样可以提高IO吞吐率
5、用优化器,优化你的查询
6、考虑冗余,这样可以减少连接
7、可以考虑建立统计表,就是实时生成总计表,这样可以避免每次查询都统计一次
mrzxc 等说的好,考虑你的系统,注意负载平衡,查询优化,25 万并不大,可以建一个表,然后按mrzxc 的3 4 5 7 优化。 速度,影响它的因数太多了,且数据量越大越明显。
1、存储 将硬盘分成NTFS格式,NTFS比FAT32快,并看你的数据文件大小,1G以上你可以采用多数据库文件,这样可以将存取负载分散到多个物理硬盘或磁盘阵列上。
2、tempdb tempdb也应该被单独的物理硬盘或磁盘阵列上,建议放在RAID 0上,这样它的性能最高,不要对它设置最大值让它自动增长
3、日志文件 日志文件也应该和数据文件分开在不同的理硬盘或磁盘阵列上,这样也可以提高硬盘I/O性能。
4、分区视图 就是将你的数据水平分割在集群服务器上,它适合大规模OLTP,SQL群集上,如果你数据库不是访问特别大不建议使用。
5、簇索引 你的表一定有个簇索引,在使用簇索引查询的时候,区块查询是最快的,如用between,应为他是物理连续的,你应该尽量减少对它的updaet,应为这可以使它物理不连续。
6、非簇索引 非簇索引与物理顺序无关,设计它时必须有高度的可选择性,可以提高查询速度,但对表update的时候这些非簇索引会影响速度,且占用空间大,如果你愿意用空间和修改时间换取速度可以考虑。
7、索引视图 如果在视图上建立索引,那视图的结果集就会被存储起来,对与特定的查询性能可以提高很多,但同样对update语句时它也会严重减低性能,一般用在数据相对稳定的数据仓库中。
8、维护索引 你在将索引建好后,定期维护是很重要的,用dbcc showcontig来观察页密度、扫描密度等等,及时用dbcc indexdefrag来整理表或视图的索引,在必要的时候用dbcc dbreindex来重建索引可以受到良好的效果。 不论你是用几个表1、2、3点都可以提高一定的性能,5、6、8点你是必须做的,至于4、7点看你的需求,我个人是不建议的。打了半个多小时想是在写论文,希望对你有帮助。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 信用卡预借现金额度已经没有了,剩下可以刷卡的额度有办法变成现金吗? 太阳能路灯的工作原理是什么? 求专业人士回答 太阳能路灯原理是什么? 中兴ba610c手机如何截屏 我的招商银行信用卡原本有五千的预借现金额度 为什么下降到了三千了? 太阳能路灯系统工作原理是什么? 刚还了款 信用卡预借现金显示额度已用完是什么意思? 交通银行信用卡我已经还款了 为什么预借现金可用额度是0 信用卡预借可用额度5000预借现金为零是为什么 泰铢面值最大的是一万的吗? 兴业银行信用卡可用额度3000多,为什么在现金分期和预借现金里面显示0呢? 驾照照科二的考试顺序 交通银行信用卡已经还款了,为什么预借现金可用额度是0? 考科目一的流程 信用卡全部预借现金已用完是怎么回事? 泰铢纪念币图片500面值的是什么样的 科目一考试是怎么个流程 科目一考试流程是怎样 办理的中国银行信用卡为什么预借现金额度为零? 泰珠1000元和500元面币人头像是一个人吗? 太阳能路灯原理 Win10系统 CAD2014字体乱码; 太阳能路灯的工作原理(简介) 中兴ba610t怎样按截屏 太阳能路灯工作原理谁了解,能说下吗 中兴ba610c怎么截屏 太阳能灯具的工作原理 做泰国罗勒炒饭时,都要用到哪些食材和佐料? 暂时退出ftp命令回到shell中时应键入什么命令? 暂时退出ftp命令回到shell中时应键入什么命令 做泰国罗勒炒饭时,都要用到哪些食材? linux中怎么从ftp回到命令行? 求泰国酸辣汤做法和材料,谢谢! ftp批处理命令如何实现自动退出 泰国的绿咖喱由什么调料调制而成的? cmd下ftp的命令切换 DOS下FTP下载完文件后,用什么命令退出FTP k歌在微信状态里下载的作品怎么删除 k歌达人发布作品怎么删除 如何用CMD命令访问一个FTP地址