在我们的应用程序中,我们使用Hibernate和PostgreSQL来存储数据。 在我们的数据库表中,我们有一个鉴别器列,例如“TIPPSPIEL”。 这是一个固定的string,不能被任何用户操纵。 突然之间,我们在这个巨大的桌子上有一个条目,我们有“TIPPQPIEL”而不是“TIPPSPIEL”。 我们不知道这是怎么发生的。 是否可以通过我们的硬盘切换一个位,所以我们的字母“S”不再被编码为“1010001”,而是突然变成硬盘上的“Q”,一个位如下切换:1010011? 我不是硬盘上的一些专家,但是我猜测操作系统或磁盘有校验和和其他东西,以确保这不会发生。 有没有可能只有一个位切换,所以我的文件显示我一个字母“Q”,而不是一个“S”? 更新:我们做了进一步的分析。 我们的从数据库从主(PostgreSQLfunction)获取它的WALlogging。 无论如何:我们的从服务器应该同步。 但奴隶在这一行中并不同步。 我们可以看到它几天前没有任何用户在这个特定的条目上的交互。 所以它必须有点翻转。 害怕!
我们遇到了一个问题,在这个查询大约有5000万行,索引大小为4 GB(表大小大约为6 GB)的表中,导致数据库服务器交换内存并显着减速。 我很确定这是与临时表大小超过,并交换到磁盘。 如果我从32 GB的RAM升级我的数据库服务器到64 GB的RAM,我想知道如果MySQL数据库将能够充分利用这个额外的内存,而不是交换。 我已经经历了一些variables(例如KEY_BUFFER_SIZE等),他们似乎支持超过64 GB的设置值。 但是,MySQL文档说tmp_table_size最大为4 GB。 那么内存升级是值得的吗? “查询大桌面”问题是否会从中受益,还是因为4 GB的限制而没有帮助? 我知道还有其他解决scheme,比如重组表格,以不同的方式进行分区,等等,但是不改变表格的任何内容,会有额外的内存帮助吗? 另外,一般来说,还有其他与内存相关的variables,当从32位移动到64位内存时,MySQL将无法使用这些variables。 我们使用64位Linux(Ubuntu)作为我们的数据库服务器。 谢谢,盖伦
首先,这不是关于从mysql本身加载数据,而是使用命令行工具“mysqlimport”。 我正在使用它将CSV直接加载到表中,并需要查看它生成的警告。 我似乎无法得到警告显示与详细debugging打开。 有任何想法吗? (mysql 5.0.5)
我想知道在HP(DL380p)Gen8服务器上是否有任何人使用Intel DC3700固态硬盘(或类似的) 我正在升级一组使用直连存储的数据库服务器。 通常,我们在我们的服务器configuration中使用惠普品牌的一切,除了几个SSD的桌面(所有这些桌面都完美无缺地工作)之外,我还没有使用固态硬盘 – 当然不是在服务器上。 我们正在升级的服务器在Windows上运行SQL Server(2005)。 我们正在迁移到SQL 2012.当前的机器在DL370 G6上托pipe一个200GB的数据库,并在RAID 1 + 0中configuration72GB 15K SFF驱动器,如下所示:OS(2主轴),tempdb(4主轴),t-日志(8主轴),数据(20锭)。 性能不是问题(CPU负载通常为20%/峰值30%,磁盘队列为典型值= 1)。 数据卷磁盘运行在P800外的MSA50中,因此可能有5K IOPS。 硬件已经接近4年了,所以是时候刷新了。 由各个硬盘报告的数据使用情况显示自从部署到数据卷后的写入量<100TB; 在事务日志卷上写入<10TB; 和tempdb上的〜1TB。 这是用例。 现在考虑一个新的,相同的磁盘子系统。 每台服务器将运行约15000美元(34x 15K硬盘@ 250美元+ 2个D2700机架+智能arraysP421用于外部存储)。 考虑一个类似的SSD部署,例如数据量为6x 200GB SSD,OS,tempdb和日志为2(100GB)。 也许矫枉过正,但使用英特尔直streamS3700所有与第二arrays卡带给我每台服务器大约5千美元。 另外,它可以安装在一个2U的盒子里(使用DL380p上的扩展笼),每年可以节省数百美元的电费。 随着SSD性能的提高,这甚至可能会覆盖一些琐碎的查询;-)。 等同的“无忧”HP SSD解决scheme将运行约10万美元。 两倍的价格与较less的保修,较低的耐力,但保证性能和可pipe理性。 当然,有大量的中间解决scheme可以工作。 我也非常了解供应商支持的解决scheme与第三方的权衡。 我没有的是整合这些特定产品的经验来帮助量化这些权衡。 我希望有人在那里,并愿意分享他的经验。 我想到的问题是: 在arraysP42x / P822卡上,S3700在Proliant环境中能够很好地发挥作用吗? 如果使用S3700,使用第三方卡是否有优势,比如LSI 9270-8i? 我已经概述了如何(很容易)用第三方解决scheme完成固件升级或pipe理警报? 如果大会有特殊的问题,你们是怎么解决的呢? 随着固态硬盘在存储领域引入的变化,存储解决scheme甚至比几年前简单得多。 我相信他们在未来几年会有很大的不同,我们期待着再等一个周期才能认真考虑在任何服务器应用中使用SSD。 在我走过这条路之前,有没有人会分享他们的相关经验? 请告诉我们为什么我们聪明,疯狂,或者介于两者之间。
我正在使用MySQL,我需要创build一个帐户,可以连接从本地主机或从另一台服务器,即10.1.1.1。 所以我在做: CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123'; CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123'; GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1'; 这工作正常,但有没有更好的方法来创build一个链接到多个IP的用户帐户,还是需要这样做? 我主要担心的是,将来,权限将被更新为'bob'账户,而不是其他账户。
在SQL Server 2008中有一个权限查看服务器状态。 这个权限给用户什么样的权限? SQL SERVER意味着什么?
我希望你们中的许多人正在处理高stream量的数据库驱动的网站,而且你的主要可伸缩性问题可能在数据库中。 最近我注意到了一些事情: 大多数大型数据库都需要一组DBA才能进行扩展。 他们经常与硬盘驱动器的局限性作斗争,并最终采用非常昂贵的解决scheme(SAN或大型RAID,经常维护的磁盘碎片整理和重新分区等)。维护此类数据库的实际年度成本在$ 100K到$ 1M之间太陡了:) 最后,我们有几家公司,如英特尔,三星,FusionIO等,刚刚开始销售基于SLC闪存技术的极速而又经济实惠的SSD硬盘。 这些驱动器的随机读取/写入速度比市场上最好的旋转硬盘驱动器快100倍(每秒高达5万个随机写入)。 他们的查找时间几乎为零,因此随机I / O的成本与顺序I / O相同,这对于数据库来说非常棒。 这些固态硬盘的成本大约是每GB 10-20美元,而且相对较小(64GB)。 因此,似乎有机会通过简单地构build足够大的RAID 5arraysSSD驱动器(这将花费数千美元)来避免以传统方式扩展数据库的巨大成本。 然后,我们不关心数据库文件是否被分割,我们可以承受每秒100次的磁盘写入,而不必将数据库分散到100个主轴上。 。 其他人对此感兴趣吗? 我一直在testing一些SSD驱动器,可以分享我的结果。 如果这个网站上的任何人已经用SSD解决了他们的I / O瓶颈,我很乐意听到你的战争故事! PS。 我知道有很多昂贵的解决scheme可以帮助实现可扩展性,例如经过时间考验的基于RAM的SAN。 我想要清楚的是,即使是5万美元对于我的项目来说也太昂贵了。 我必须find一个解决scheme,花费不超过1万美元,并且不需要太多时间来执行。 Dave,NXC和Burly, 感谢您的回复! 我想澄清的是,“便宜”这个词对我来说非常重要。 所以,我必须使用便宜的戴尔服务器($ 4K 2950s只有8个内存银行)。 我已经安装了32GB的内存,所以我无法继续扩展。 此外,添加内存并不能让你免受磁盘写入瓶颈,这是我现在的主要问题。 我曾经关心固态硬盘的寿命,但在阅读了现代耗损均衡algorithm之后,我确信这些硬盘将持续足够长的时间。 我的数据库每天写入300GB,预计在2009年每天超过1TB。企业级SSD旨在处理多年来每天大约10TB的写入。 我不同意Burly的观点,即从SAS迁移到SSD需要花费太多的人力。 我的数据库是一个同步镜像,所以我可以升级镜子的一面,然后观看它几个月,如果它吹,我可以故障转移到第二台服务器,仍然有旧的好SAS硬盘驱动器…
我正在写一个shell脚本,使用2个窗体调用psql …一个是通过命令(-c),另一个是通过文件(-f)。 例如psql -c“create table foo(bar integer)” psql -f foobar.sql 这些forms之间的一个区别是,如果遇到错误,通过命令调用(-c)将返回非零的退出代码,而文件调用(-f)总是返回零。 我想知道是否有这种行为的解决方法? (即如果执行文件时发生错误,则返回非零值)。 谢谢。
有没有办法导出一个PostgreSQL数据库,然后用另一个名称导入它? 我在Rails中使用PostgreSQL,而且我经常从生产中导出数据,其中数据库名为blah_production,并在名为blah_development和blah_staging的开发或分期中导入。 在MySQL上这是微不足道的,因为导出没有任何地方的数据库(除了一个评论可能),但在PostgreSQL似乎是不可能的。 这是不可能的吗? 我目前正在这样倾销数据库: pg_dump blah > blah.dump 我没有使用-c或-C选项。 该转储包含以下语句: COMMENT ON DATABASE blah IS 'blah'; ALTER TABLE public.checks OWNER TO blah; ALTER TABLE public.users OWNER TO blah; 当我尝试导入 psql blah_devel < blah.dump 我明白了 WARNING: database "blah" does not exist ERROR: role "blah" does not exist 也许问题不是数据库,而是angular色? 如果我这样倾倒它: pg_dump –format=c blah > blah.dump 并尝试以这种方式导入它: […]
这是关于数据库容量规划的典型问题 。 有关: 你能帮我做我的容量计划吗? 您如何为网站进行负载testing和容量规划? 我期待为数据库的容量规划工具和方法创build一个规范的问题。 这是一个典型的问题。 显然,一般工作stream程是: 把你的scheme到位 添加监控 添加stream量 评估结果 根据结果进行修复 冲洗,重复,直到合理愉快 请随意为不同的networking服务器,框架等描述不同的工具和技术,以及最佳实践。