我需要为我投入生产的系统设置一个好的数据库集群解决方案。我希望从专家那里得到一些建议,因为我主要是一名开发人员而不是数据库管理员。
背景
我和我的团队正在用基于 .NET 的系统替换旧系统。目前,我们正在做并行测试,并在慢慢将用户迁移到新系统;然而,令我震惊的是,一旦 thigs 真正开始运行,我们当前的数据库解决方案不足以处理负载。现在,我在一台运行 SQL Server 2008 R2 的 Dell PowerEdge 服务器上拥有我们的整个数据库。它适用于开发和基本测试,但是当我们决定拔掉旧系统的插头并完全使用新系统时,我们将需要诸如故障转移、负载平衡、冗余等之类的东西。我从来没有实施过集群之前,因为我工作的任何地方都已经实施了,而不是我的责任来维护。由于我们正在从头开始实施基于 PC 的系统,因此我正在寻找一个起点。
建议
您对我目前的情况有什么建议:我们有大约 50 个内部用户,他们将负责从数据输入、索赔处理等方面的工作,并且可能有大约 1500-2000 个来自外部的并发连接。进行虚拟设置还是物理设置更好?光纤通道还是SATA?
应该索引多对多表吗?什么样的索引最好?
这是一个示例表:
CREATE TABLE user_role (
userId INT,
roleId INT
)
--edit: drachenstern - I added the table def based on the original comments, and assumed ints.
Run Code Online (Sandbox Code Playgroud) 我有一个在字段中存储 XML 值的表:OtherData。
来自一行的 XML 值:
< file path="C:\WINDOWS\system32\svchost.exe" />
Run Code Online (Sandbox Code Playgroud)
我想选择所有具有像“%svchost%”这样的属性路径的行
执行此操作的正确 SQL 查询是什么?
我正在寻求帮助来编写此查询。我在下面包含了一些示例数据。我最初的前提是从第 13 行开始的所有值都是动态值,前 12 行是静态值。我知道我想用来计算每一行值的公式。
以下是我认为的 DDL
CREATE VIEW [v_AMP_C] AS
SELECT in.I_Date ,--Date
in.I_O_P ,--Money
in.I_O_H ,--Money
in.I_O_L ,--Money
in.I_C_O ,--Money
c.AMPS12_C --Money
FROM dbo.IC_Raw_In in
INNER JOIN dbo.AMPS12_C c ON in.I_Serial = c.i_serial
Run Code Online (Sandbox Code Playgroud)
并且通过dbo.IC_Raw_In在除 I_Date 之外的所有列上使用数据类型为 Money的大容量插入将数据导入到此表中。
然后当我运行这个查询时,SELECT * FROM v_AMP_C我得到了下面的输出
I_Date I_O_P I_O_H I_O_L I_C_O AMPS12_C
01/10/11 509.75 515 508 512.45 512.45
01/10/11 511.7 511.7 506.1499 506.5499 509.4999
01/10/11 507.1499 510.25 507.1499 510.25 509.7499
01/10/11 510 512.3499 509.2999 512.3499 510.3999
01/10/11 512.5 512.5 …Run Code Online (Sandbox Code Playgroud) 在 SQL Server 中,如何在不 (DBCC) 缩小日志文件的情况下减小日志文件大小。我知道缩小日志文件会释放一些空间,但也会导致碎片化。在简单模式下执行检查点或在完整模式下备份事务日志应该可以解决问题,但它在我的场景之一中不起作用。任何建议/链接都将有助于防止日志文件碎片。
我正在寻找用于字典的数据库软件包(例如您可能在家里某处的死树的大块)。我想要数据库
所有这些数据都将手工输入。
如果这个数据库有类似 github 的东西,那不会有什么坏处。不过,我不知道是否有人提供了类似的数据库。
没有人的工作、职业或公司依赖于这个决定。
有什么建议?
我得到了一个包含 Projects 和 Media_files 的数据库。他们处于简单的一对多关系中。
我现在需要将文件夹添加到项目中。Media_files 可以放在 Folders 中,Folders 中可以有 Folders。
我不知道最好的方法是,首先,让文件夹属于其他文件夹,其次,保持 Projects 和 Media_files 之间当前关系的最佳方式,或者是否最好打破这种关系。
项目是一个简单的表:
id,
title,
description,
owner_id.
Run Code Online (Sandbox Code Playgroud)
文件夹是一个全新的表格,但我对它们的基本想法是:
id,
project_id,
parent_folder_id,
title,
description
Run Code Online (Sandbox Code Playgroud) 我正在使用一个名为feedwordpress的 WordPress 插件,以便在WordPress上运行一个类似网站的星球(它从其他网站获取内容,并获得他们的许可)(在此处查看)。
该插件很棒,除了一件事 - 它每周左右让我的(VPS)服务器提交一次。
在最近与网络管理员的电子邮件交流中,他写道:
看起来 mysql 资源使用量的增加确实是由 r-bloggers.com 运行的慢查询引起的。这是正在生成的一些日志的副本。您需要进一步优化此站点和数据库,以使其尽可能高效地运行。如果已经进行了这些更改,您最好的选择是考虑对您的 VPS 进行大规模升级,因为您的站点需要和看到的高级别或资源和流量。
以下是日志:
# Time: 110614 16:11:35
# User@Host: rblogger_rblogr[rblogger_rblogr] @ localhost []
# Query_time: 104 Lock_time: 0 Rows_sent: 0 Rows_examined: 54616
SELECT SQL_CALC_FOUND_ROWS wp_rb_posts.*
FROM wp_rb_posts
WHERE 1=1 AND (
(guid = '235cbefa4424d0cdb7b6213f15a95ded') OR
(guid = 'http://www.r-bloggers.com/?guid=235cbefa4424d0cdb7b6213f15a95ded') OR
(guid = 'http://www.r-bloggers.com/?guid=235cbefa4424d0cdb7b6213f15a95ded') OR
(MD5(guid) = '235cbefa4424d0cdb7b6213f15a95ded') ) AND
wp_rb_posts.post_type IN
('post', 'page', 'attachment', 'revision', 'nav_menu_item') AND
(wp_rb_posts.post_status = 'publish' OR
wp_rb_posts.post_status = 'future' OR …Run Code Online (Sandbox Code Playgroud) 我有两台服务器都在 MySQL 5.5.20 上运行,我想设置复制,所以主服务器上的每个更新/插入都会立即反映在从服务器上。
我尝试遵循本教程(我使用了本网站上给出的说明。)但它不起作用。我发现在完成所有这些之后我不能......((((请用你的经验更新这部分)))
您能否建议我在 MySQL 5.5.20 中使用一种经过测试且有效的方法来执行此操作?
我有一个与其他人描述的类似的问题。
IN使用索引,需要10分钟才能运行;我试过了
set session eq_range_index_dive_limit=4294967295; 没有运气。set @@global.max_seeks_for_key=100; 还是没有运气。这是在我升级了一些服务器之后发生的。
mysql_upgrade 没有报告任何问题。
正如我所指出的,我看到了其他问题,但其中提出的答案都没有解决我的问题。
非常感谢罗兰多到目前为止的回答。我继续在 my.cnf 的 [mysqld] 部分对此进行了测试
optimizer_switch = index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=off,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=off,derived_merge=off
Run Code Online (Sandbox Code Playgroud)
遗憾的是,索引仍然没有被拾取。我尝试关闭所有新添加的选项:
duplicateweedout=off
condition_fanout_filter=off
derived_merge=off
Run Code Online (Sandbox Code Playgroud)
我什至尝试过,因为我在我的解释计划中SET optimizer_switch='block_nested_loop=off'
得到了'Using where; Using join buffer (Block Nested Loop)'和。'Using temporary; Using filesort'
还在挠头。谢谢,最重要的是升级导致很多查询不使用索引,这仍然是一个痛苦。数据库接近 2TB,但查询在 5.6 上的最后几个 master 中运行良好
mysql ×3
sql-server ×2
clustering ×1
migration ×1
mysql-5.5 ×1
mysql-5.6 ×1
mysql-5.7 ×1
optimization ×1
performance ×1
replication ×1
upgrade ×1
xml ×1