Questions tagged «database»

以有组织的方式处理大量数据的系统

6
使用便宜的SSD硬盘扩展数据库
此问题已从堆栈溢出迁移,因为可以在服务器故障时回答。 迁移 8年前。 我希望你们中的许多人正在使用高流量数据库驱动的网站,并且有机会将主要的可伸缩性问题放在数据库中。我最近注意到了几件事: 大多数大型数据库都需要一组DBA来进行扩展。他们不断地因硬盘驱动器的限制而苦苦挣扎,最终获得了非常昂贵的解决方案(SAN或大型RAID,频繁的碎片整理和重新分区维护窗口等)。维护此类数据库的实际年度成本在10万美元至100万美元之间,对我来说太陡了:) 最终,我们吸引了多家公司,如英特尔,三星,FusionIO等,它们才开始销售基于SLC闪存技术的超快速但价格合理的SSD硬盘。这些驱动器的随机读/写速度比市场上最好的旋转硬盘驱动器快100倍(每秒高达50,000个随机写)。它们的寻道时间几乎为零,因此随机I / O的成本与顺序I / O相同,这对数据库来说真是棒极了。这些SSD驱动器每GB的成本约为10-20美元,而且相对较小(64GB)。 因此,似乎有机会通过简单地构建足够大的RAID 5 SSD驱动器阵列(只需花费几千美元)来避免传统方式扩展数据库的巨大成本。然后,我们不在乎数据库文件是否碎片化,并且我们可以提供每秒100倍的磁盘写入量,而不必将数据库分布在100个心轴上。。 还有其他人对此感兴趣吗?我一直在测试一些SSD驱动器,并且可以分享我的结果。如果该站点上的任何人都已经解决了使用SSD的I / O瓶颈的问题,我很想听听您的战争故事! PS。我知道有很多昂贵的解决方案可帮助实现可扩展性,例如久经考验的基于RAM的SAN。我想明确指出,即使是5万美元,对于我的项目来说也太昂贵了。我必须找到一种解决方案,其成本不超过$ 10,000,并且不需要花费很多时间来实施。 Dave,NXC和Burly, 多谢您的回覆!我想澄清一下,“便宜”一词在我的情况下非常重要。因此,我必须使用便宜的戴尔服务器($ 4K 2950s,只有8个存储库)。我已经安装了32GB的RAM,因此无法继续以这种方式扩展。此外,添加RAM不会使您摆脱磁盘写入瓶颈,这是我目前的主要问题。 我曾经关心SSD的寿命,但是在阅读了现代损耗平衡算法后,我很确定这些驱动器将持续足够长的时间。我的数据库每天写入300GB,并预计在2009年每天超过1TB。企业级SSD可以在多年内每天处理大约10TB的写入。 我不同意Burly的观点,即从SAS迁移到SSD需要太多的工作。我的数据库是一个同步镜像,因此我可以升级镜像的一侧,然后观察它几个月,如果它崩溃了,我可以故障转移到第二台服务器,该服务器仍旧有旧的SAS硬盘驱动器...

1
如何验证SQLite db3文件有效/一致
我有一些sqlite version3 db3文件,出于各种原因,我从一个正在运行的生产系统(我知道sysadmin不好,sysadmin不好)中复制了这些文件。我是否可以运行一些sqlite命令,以验证是否可以从这些文件中读取所有数据(我不介意是否需要一段时间)。 我正在考虑破解一些perl,将所有数据转储出去,然后将其重新导入到新文件中。我认为,如果sqlite遇到损坏的数据,它将抛出异常。有没有更好的办法? 我是CentOS 5.3和sqlite-3.3.6-2
24 linux  database  sql  sqlite 



1
可能只有一点切换,所以我的文件显示的是字母“ Q”而不是“ S”
在我们的应用程序中,我们使用Hibernate和PostgreSQL来存储数据。在我们的一个数据库表中,有一个“ discriminator”列,例如“ TIPPSPIEL”。它是固定的字符串,任何用户都不能操纵。 突然,我们在这个巨大的表中有了一个条目,其中的位置是“ TIPPQPIEL”而不是“ TIPPSPIEL”。我们不知道如何发生。 是否有可能以某种方式我们的硬盘正在切换一位,所以我们的字母“ S”不再编码为“ 1010001”,而是突然在硬盘上变成了“ Q”,并且切换了一位:1010011? 我不是硬盘专家,但是我想操作系统或磁盘上要有校验和和其他东西,以确保不会发生这种情况。 可能只有一点切换就可以使我的文件显示字母“ Q”而不是“ S”吗? 更新:我们进行了进一步的分析。我们的从数据库从主数据库获取其WAL记录(PostgreSQL功能)。无论如何:我们的从属服务器应该同步。但是从机在这一特定行上并没有同步。我们可以看到它发生在几天前,而用户对此特定条目没有任何交互。因此,它必须有点翻转。害怕!

4
MySQL可以有效利用64 GB RAM吗?
我们一直在遇到这样一个问题:查询具有约5000万行,索引大小为4 GB(表大小约为6 GB)的表会导致数据库服务器交换内存,并且速度显着降低。我很确定这与超出临时表的大小有关,并且已将其交换到磁盘。 如果我将数据库服务器从32 GB的RAM升级到64 GB的RAM,我想知道MySQL数据库是否能够充分利用此额外的内存而不进行交换。我经历了一些变量(例如KEY_BUFFER_SIZE等),它们似乎支持超过64 GB的设置值。但是,MySQL文档说tmp_table_size的最大值为4 GB。 那么内存升级值得吗?“大表查询”问题将从中受益,还是因为4 GB的限制而无济于事?我知道可能还有其他解决方案,例如重组表以不同的方式进行分区等,但是在不更改表的任何内容的情况下,额外的内存有帮助吗? 而且,通常,从32 GB RAM迁移到64 GB RAM时,MySQL是否还有其他与内存相关的变量无法利用? 我们正在使用64位linux(Ubuntu)作为我们的数据库服务器。 谢谢,盖伦

5
MySQL是否应该单独安装
我经常听到人们发表诸如“我们的MySQL服务器计算机发生故障”之类的陈述,这给我的印象是他们将一台计算机专用为MySQL服务器(我猜他们只是在安装OS,而在上面仅安装了MySQL)。作为开发人员而不是系统管理员,我习惯于将MySQL与Web服务器和PHP一起作为LAMP堆栈的一部分进行安装。 有人可以向我解释: 在单独的服务器上安装MySQL有什么意义?当我可以在其中添加整个灯架以及其他服务器时,听起来像是在浪费资源。 如果数据库位于单独的计算机上,则需要使用的应用程序如何连接到该数据库?
20 mysql  database 

2
仅使用InnoDB(5gb数据库)的8gb RAM专用MySQL服务器的最佳MySQL缓存设置
在设置MySQL性能方面,我是一个非常大的菜鸟。老实说,我并不担心微调以压缩MySQL的所有性能,但我确实知道,提供某些最佳结果的最重要的事情是正确设置缓存/缓冲区。 我试图通过仅使用InnoDB作为存储引擎来简化事情。我确实有一个专用于MySQL的服务器。它有8gb的RAM,我应该如何分配它以最大化性能?我希望能够将我的整个数据库放入内存中以获得最佳性能。该数据库约为5gb。这可能吗? 我应该为查询缓存分配多少内存?InnoDB缓冲池要多少钱?其余计算机(即非MySQL相关进程)需要多少钱?等等。 由于我没有使用MyISAM,因此我真的不需要在正确的密钥缓存中放置很多内存吗?

7
在PostgreSQL上插入性能最佳的文件系统是什么?
我很好奇,是否有人在文件系统和数据库性能之间进行了任何实验或比较。在Linux上,我想知道什么是postgres数据库的最佳文件系统。另外,什么设置(inode等)最适合呢?根据数据库中的数据,这可能会大不相同吗? 如果您正在寻找与一般文件系统/数据库性能有关的问题,则此帖子有一些不错的信息。 但是,我想获得有关插入性能而不是读取性能的尽可能多的建议。感谢您提供的所有出色答案!

5
在停机时间很少或没有停机的情况下修改超大型mysql表的列
我定期需要对mysql 5.1中的表进行更改,主要是添加列。使用alter table命令非常简单。但是我的表现在有多达4000万行,并且它们正在快速增长……所以那些alter table命令要花费几个小时。我猜,几个月后,他们将需要几天的时间。 由于我使用的是Amazon RDS,因此无法使用从属服务器,然后再升级为主服务器。所以我的问题是,是否有一种方法可以使停机时间最少?如果用户仍然可以使用数据库,那么我不介意花费数小时甚至数天的操作...当然,他们至少可以在添加列时读取吗?如果我的应用尝试写怎么办?插入还是更新?如果它立即失败,那实际上还不是很坏,如果它只是挂起并导致数据库服务器出现问题,那将是一个大问题。 这必须是一个相当普遍的扩展问题,每个人都需要添加列。.对生产数据库通常做什么?从站->主迁移? 更新 -我忘了说我正在使用innodb存储引擎

2
如何计算PostgreSQL的max_connections和pgbouncer的default_pool_size?
是否有一个规则或东西,我可以用它来计算出一个良好的数量max_connections,default_pool_size和max_client_conn? 默认值是奇数。PostgreSQL默认为max_connections = 100,而pgbouncer默认为default_pool_size = 20。default_pool_size不应总是大于max_connections吗?否则,有什么意义呢?我认为pgbouncer的目的是让我们通过减少开销(通过重用PostgreSQL的连接)来处理更多的连接。我很困惑。 我正在寻找与PostgreSQL Wiki中类似的建议,例如“此参数应该是您内存的〜50%”。 我记得有一个用于MySQL的电子表格,可以让您计算这类参数。对于PostgreSQL / pgbouncer拥有类似的功能真是太棒了。

2
如何通过ssh隧道连接到mongodb服务器
使用sequelpro可以很容易地连接到AWS上的远程mysql服务器,但是我在mongodb上做同样的事情很费劲。 我尝试通过命令行设置ssh隧道,如下所示: ssh -fN -l root -i path/to/id_rsa -L 9999:host.com:27017 host.com 我也尝试用IP地址替换主机 这个想法是将端口9999上的所有mongodb连接转发到端口27101上的主机上的连接。但是当我运行命令时: mongo --host localhost --port 9999 连接失败,我得到这个代替: MongoDB shell version: 2.6.0 connecting to: localhost:9999/test channel 2: open failed: connect failed: Connection timed out channel 3: open failed: connect failed: Connection timed out 2014-05-22T14:42:01.372+0300 DBClientCursor::init call() failed 2014-05-22T14:42:01.374+0300 Error: …

5
我应该安装32位数据库还是64位数据库?
(我已经读了很多关于64位和32位OS / App的文章,但是这个问题是专门针对数据库的。) 我试图了解32位和64位数据库的优缺点,也就是说,在什么条件下使用64位安装才有意义。 我感兴趣的数据库系统是:SQL Server 2008,MySQL和PostgreSQL 9.0。 我已经读到9.0之前的PostgreSQL版本仅适用于Windows 32位版本,这篇有关在64位Windows上运行32位PostgreSQL的文章消除了我的一些困惑,但是我正在寻找更多信息。 什么时候可以从使用64位数据库中受益(例如,数据库大小/磁盘空间,可用的系统内存,可以从中受益的数据序列类型,使用的是哪个数据库引擎等)?

4
我应该备份和还原`mysql`数据库吗?
在创建用于备份和还原整个MySQL服务器的自动化解决方案的过程中,我遇到了一个mysql数据库,该数据库似乎包含用户帐户,权限,元数据等。是否应该备份该数据库?备份并尝试还原它会破坏事情吗? 正如您所想象的,我在Google搜索“备份MySQL的mysql数据库”方面经历了一段时间。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.