我在谷歌做了一些阅读,我做的唯一的事情就是让自己感到困惑。 有些人说count()比较慢,有很多logging,有人说你可以caching数字甚至是使用sequence … 用最佳性能和最低cpu / ram使用情况来统计表中多行的最佳方法是什么? 我的意思是> = 500,000行。
我们正在开发的系统包括一个Web应用程序前端和一个使用SQL Server 2008 R2中的存储过程进行大量数据处理的后端(请不要问为什么…)。 这些存储过程大量使用临时表(创build,插入,连接),以便写入和读取中的tempdb I / O率很高。 我们的客户需要速度,所以我们要推荐以下内容: 购买带有RAID 1 SSDarrays的服务器,用于存储主数据库(如果他们有钱,也许是RAID10),使用另一个硬盘驱动器来安装操作系统和SQL Server,这样重要的数据就可以通过快速的驱动器进行复制存储, 64 GB RAM。 使用Ramdisk来存储tempdb数据库,所以在RAM中处理临时表(我们认为是最大的性能瓶颈)。 一些上下文数据: 我们的数据库使用不超过10 GB,预期增长率非常低。 Tempdb通常增长到不超过2-3 GB。 服务器将用于数据库和Web服务器。 Ramdisk软件可以在Windows启动时安装虚拟磁盘。 我们在一台笔记本电脑上testing了ramdisk方法,内存很大。 至less加速是显着的(存储过程执行时间减less到1/3)。 我需要帮助,以确定这是否是一个好的解决scheme,并发现任何缺陷(明显或不太明显),我可能会失踪。 编辑:感谢迄今为止的答案! 我忘了明确提到使用应用程序的并发用户,所以会有多个临时表操作在运行。 另外,混合Web服务器和数据库服务器不是我们的select,我们已经知道它不是最佳的;)
我有一个大约200万行的表格,其中包含我们用于分析的交易数据。 每个星期我们都会用新的数据重新载入,所以我们一直使用TRUNCATE清除它,然后插入新的行。 桌子上有几个索引。 如果我不删除并重新创build索引,每次截断和重新填充之后是否需要重新索引,还是不必要? 我应该在TRUNCATE之后运行VACUUM,还是这样也不必要?
我们正在build立一个应用程序,每个客户端都有自己的数据库。 没有一个数据库是特别大的(每个20MB到400MB),但是会有5000个启动,并且在任何时候都有100个左右的活动。 我们的团队一直在讨论如何最好地build立系统。 客户只能每2周访问一次数据库(401k /金融处理),一次只能使用10-30分钟。 操作在读/写之间均匀分布。 我们一半的团队认为,我们应该将数据库分布在多台便宜的服务器上,并使用SQL Express …他们说,考虑到每个数据库使用的时间很短,内存/caching将不会有用。没有超过1台服务器的完整SQL标准的预算)。 这是这种情况吗? 更高的内存限制实际上是我看到MSSQL Standard给我们带来的唯一优势(我们已经有用于执行备份/恢复,模式升级,迁移数据等的脚本)。 更新 我对多个数据库与一个数据库的性能特点特别感兴趣。 最终用户的体验不会比1TB数据库更好地打到一个200MB的数据库(即使这两个数据库的索引都很好)? 这也意味着我们可以非常快速地轻松备份/恢复单个客户端数据库,对吧? 我们是否需要调整SQL Server以更好地处理“数千个数据库”情形?
我正在build立一个服务器与以下规格: * 4个处理器(每个12核的AMD Opteron) * 32 GB的内存 * 8 HDD(15K SAS双端口) * CentOS 5.5 * JBoss * PostgreSQL 很可能稍后我会将应用程序从数据库中分离出来,但是现在他们将会在同一台机器上。 我已经读过PostgreSQL的性能好处: * RAID 10 *独立的OS分区 *单独的xlog分区 *单独的pgdata分区 由于我的单个RAID 10卷似乎总共有559808 MB可用,这是当前的分区计划: *操作系统为337856 MB * 102400 MB为pgdata * xlog为51200 MB *交换68352 MB 这里有一些问题: *我的分区计划看起来如何? *安装CentOS时,当我进入磁盘设置步骤时,我需要定义挂载点 – 我应该为pgdata分区input什么内容? (例如参考这个例子setup mount points / pgdata1 ) *我应该input什么作为xlog分区的挂载点? *对于文件系统types,避免损坏比完美的性能更重要,因此计划是使用'noatime',但为分区挂载选项保留'data = ordered' – […]
我们有一个LAMP盒,带有2个镜像的1TB WD Black Caviar磁盘,运行整个操作系统和MySQL。 8 GB / RAM,2个四核CPU。 我们真的在磁盘I / O上征税,而且我一直在考虑build议在那里为/var/lib/mysql获取一些SSD驱动器,然后完成它。 我做了一些研究,我喜欢英特尔X25-M 160 GB的价位,但是我已经读到了有关生产中SSD的冲突选项。 我们在〜70GB,大部分是MyISAM表(> 95%)。 我们在制作过程中主要是读(8-5下午),大多是在一夜之间(上午12点 – 上午8点)写的。 在此之前,关于固态硬盘在这里已经有了一些有用的post,但我认为更好的是有点过时( 最好的是在2008年 )。 是否有更多关于SSD是否真的适合中型企业的最新反馈? 如果没有,我怎样才能把我们的数据库服务器扩展一点?
题 我怎样才能使这个post中描述的查询更快,尤其是通过使用可用的RAM来制作PostgreSQL? – 请注意,我试图适当地configurationeffective_cache_size和shared_buffers。 见下文。 背景 我必须定期join一个约2.6亿行表(coreg_master),并附带新的数据。我已经对表进行分区,以允许每个分区适合内存。 我当然也有适当的索引。 但是,将分区表分别与其他(小得多)表连接时,会在磁盘上执行完全随机的IO操作。 这是由于在大型表上嵌套循环索引扫描,由于我们没有很好的磁盘设置,所以速度很慢。 我希望它使用所有可用的内存来caching大的分区表,我知道应该由Linux内核/文件系统本身来完成。 但它仍然不会将表加载到RAM中,尽pipe它适合。 我想这是因为访问模式是不连续的,因此不会触发caching? 我不知道。 查询计划和configuration参数如下。 表结构 这是我的大桌子coreg_master的分区之一。 分区表被命名为coreg_a,coreg_b等。 \d coreg_a Table "public.coreg_a" Column | Type | Modifiers ————-+——————-+———————————————————– id | integer | not null default nextval('coreg_master_id_seq'::regclass) first_name | character varying | last_name | character varying | phone | character varying | city | character varying […]
我们有一个Web应用程序,其架构要求任何注册用户(一个公司,实际上)都应该与另一个隔离开来,也就是说,我将使用相同的数据模型运行相同的Web应用程序,但是为每个客户提供不同的数据集。 所以,我们确实考虑在每个客户的Postgres中创build一个不同的数据库。 这个解决scheme可以扩展到10-20K数据库吗? 多好? 有没有人有更好的解决scheme呢? 提前致谢。
决定哪个数据库? 任何比较? 现有的:postgresql 问题 横向不容易伸缩。 需要分片等 聚类不能解决数据增长问题 寻找:任何容易横向扩展的数据库 卡桑德拉(Twitter使用?) MongoDB(迅速普及) 伏地魔 其他? 为什么? 数据与雪球效应增长 现有的postgresqllocking表格等定期对真空任务 目前存档数据是很好的 涉及现有档案,真空,…的人员互动定期处理 需要一个'设置它。 算了吧。 当数据增长更多时,只需添加另一台服务器。 types的解决scheme
我正在使用具有本地postgres数据库的多个虚拟机的XenServer。 即使所有应用程序未使用且数据库处于空闲状态,每个虚拟机也会导致恒定的存储networkingstream量,从而降低了iscsi存储设备的性能。 运行iotop之后,我注意到postgres stats收集器进程正在不断地以大约2 MByte / s的速率写入磁盘。 然后我通过编辑/etc/postgresql/8.4/main/postgresql.conf禁用收集统计信息: #—————————————————————————— # RUNTIME STATISTICS #—————————————————————————— # – Query/Index Statistics Collector – track_activities = off track_counts = off … 如http://www.postgresql.org/docs/8.4/static/runtime-config-statistics.htm中所build议的那样。 这消除了连续写作,但closures统计跟踪有什么不利之处吗? 还是应该将pg_stat_tmp目录放在虚拟硬盘上以避免磁盘/networkingstream量? 该系统是一个最新的Debian 6.0.7(squeeze)与postgres 8.4和约20个数据库约50表,总转储文件大小小于100 MByte。