小编Der*_*ney的帖子

删除/更新外键约束中 SET NULL 的目的是什么?

我可能心胸狭窄,但是如果我创建了一个外键约束并且一行被更新或删除,如果子表的列被设置为 NULL,我将失去该连接。

故意保留这些孤立行的目的是什么?

null foreign-key

15
推荐指数
1
解决办法
6818
查看次数

可能对我的 SQL 服务器进行攻击?

检查我的 SQL Server 日志,我看到几个这样的条目:

Date: 08-11-2011 11:40:42
Source: Logon
Message: Login failed for user 'sa'. Reason: Password did not match for the login provided. [CLIENT: 56.60.156.50]
Date: 08-11-2011 11:40:42
Source: Logon
Message: Error: 18456. Severity: 14. State: 8.


Date: 08-11-2011 11:40:41
Source: Logon
Message: Login failed for user 'sa'. Reason: Password did not match for the login provided. [CLIENT: 56.60.156.50]
Date: 08-11-2011 11:40:41
Source: Logon
Message: Error: 18456. Severity: 14. State: 8.
Run Code Online (Sandbox Code Playgroud)

等等..这可能是中国人对我的 SQL Server 的攻击吗???!我在 ip-lookup.net 上查找了 IP 地址,它说它是中文的。 …

sql-server-2008 sql-server

15
推荐指数
5
解决办法
8458
查看次数

将表复制到不同的数据库名称

我们的 QA 环境的所有数据库名称都带有“test”后缀。例如,生产中的 dbname1 在 QA 中会有一个对应的 dbname1test。(这主要是为了防止 prod/qa 配置混淆)。

有一些表我想将实际生产表复制到 QA 中。我不确定我会如何告诉它说“从那里的 dbname1 复制到那里的 dbname1test”

这甚至可能吗?

mysql replication

14
推荐指数
1
解决办法
1万
查看次数

如何为小型网络团队设置本地数据库开发流程?

背景

我正在为大约 4 名程序员和 4 名设计师的小型网络团队创建一个新的开发流程,该团队在未来具有明显的发展潜力。我们的产品是一个中央应用程序,它为我们设计和托管的客户网站提供支持。

以前,我们都通过 FTP 在开发服务器上工作,使用单个开发数据库。这“工作” *了一段时间,但我们正在进入一个新的发展方向,所以它是成熟的时间我们的进程。

我们使用 Percona Server 5.5,但这应该是数据库不可知的,以保持低成本的想法。

目标

我正在考虑为数据库开发创建持续集成 (CI) 流程,并考虑到以下几点:

  1. 开发人员拥有数据的本地副本来运行开发代码
  2. 能够将数据库结构回滚到以前的变更集
  3. 能够将新功能架构更改与架构设计修复更改分开
  4. 能够在本地修改数据库结构进行测试

初始概念

我已经使用 SVN 和 LiquiBase 在下面勾勒了一个过程,尽管它完全删除了#4.

  • 从主干创建一个“开发”分支
  • 中央“开发”数据库服务器从“开发”分支运行
  • 本地开发者被设置为开发分支的奴隶(#1如上提供)
  • liquibase 变更集定期提交到开发分支,该分支执行提交后挂钩以更新中央开发数据库(这将渗透到作为该开发服务器的从属运行的本地机器)(liquibase#2上面提供)
  • 当功能或架构修复准备好进行 QA 时,DBA (me) 会将相应的更改从开发分支合并到主干中。此行为将创建一个 sql 脚本以应用于临时数据库服务器。
  • 临时服务器应该反映 TRUNK,它应该具有与生产相同的结构,加上 QA 中的更改
  • 在临时服务器上执行 sql 脚本后,对更改进行一些 QA。
  • 如果一切看起来不错,标记结构。这将生成由 DBA 在生产中手动运行的 .sql 脚本(如果需要,可用于非高峰时间)

这个过程要求所有开发人员都运行同一个“开发”分支,这意味着在任何给定时间只有一个版本的数据库模式(不确定我是否想要这个)。

这也意味着对架构的任何更改都无法在本地进行测试,如果做得不好,可能会影响其他开发人员。在我们的环境中,开发人员可能会添加新表,但很少修改现有结构。作为 DBA,设计修复由我完成。但是无法在本地测试修复是我最大的问题。

如何调整上述流程以允许本地开发,同时仍保持相对最新的数据副本(如我提议的流程中的复制所提供的那样)?我不要求数据是最新的,甚至是最后一周。


*所谓“有效”,我的意思是它足够了,但它是一个 PITA。

best-practices development

14
推荐指数
1
解决办法
6494
查看次数

MySQL存储例程中的动态SQL

根据存储例程和触发器限制,不能使用动态sql(5.0.13及以后版本的存储过程限制解除)。为什么会有这个限制?为什么将它提升为过程,而不是函数或触发器?

mysql trigger stored-procedures

13
推荐指数
2
解决办法
6544
查看次数

在同一台物理服务器上运行复制是不明智的吗?

我正在考虑为我的数据库设置主从复制。从服务器将用于冗余和可能的报告服务器。但是,我遇到的最大问题之一是我们的数据中心已经用尽了电源。因此,添加另一台物理服务器不是一种选择。

就 CPU 而言,我们现有的数据库服务器的利用率相当低(四核上的平均负载从未真正超过 1)。所以主要的想法是放入一些新驱动器并将内存加倍(从 8GB 到 16),并在同一台物理机器上运行第二个 mysql 实例。每个实例都有单独的数据库磁盘。

这个想法有什么问题吗?

编辑(更多信息):我(幸运的是)从来没有发生过任何足以关闭服务器的事情,但我正在努力提前计划。我们当然有可以从中恢复的每晚备份。但我认为,如果主服务器的驱动器出现故障(如果整台机器出现故障,显然不会),将冗余数据放在单独的磁盘上会提供更快的解决方案。

至于报告方面,我们要报告的任何表都是 MyIsam。因此,在正在写入的同一表上进行昂贵的读取可能会使服务器陷入困境。我的假设是,只要我们在主服务器上投入足够的 RAM(因为 cpu 负载还不是问题),有一个要报告的从服务器就不会影响主服务器。

mysql myisam replication

13
推荐指数
2
解决办法
4433
查看次数

SQL-Server 中计算列的奇怪行为

在阅读我的 70-433 试卷时,我想到了一些我认为不起作用的东西,但我相信它确实有效。这段话是这样写的:

该列还必须标记为PERSISTED,这意味着 SQL Server 将计算列的表达式的结果物理存储在数据行中,而不是每次在查询中引用时计算它。

由此我明白了两件事:

  1. 非持续计算列计算每次它是在查询中引用时间
  2. 因为计算列没有存储任何内容,所以我假设不能为该列创建索引。

读完后,我觉得这有点奇怪,因为我在以前的项目中设法在非持久化列上创建了索引。

如何为未持久化的东西创建索引,从长远来看这是否有害?


为了证明这一点,我运行了以下 SQL 语句:

CREATE TABLE testTable
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
    telephone VARCHAR(14),
    c_areaCode AS (SUBSTRING(telephone,0,5)),
    cp_areaCode AS (SUBSTRING(telephone,0,5)) PERSISTED
)

INSERT INTO testTable VALUES('09823 000000');
INSERT INTO testTable VALUES('09824 000000');
INSERT INTO testTable VALUES('09825 000000');

CREATE NONCLUSTERED INDEX IX_NotPersisted ON testTable(c_areaCode);
CREATE NONCLUSTERED INDEX IX_Persisted ON testTable(cp_areaCode);
Run Code Online (Sandbox Code Playgroud)

然后运行以下查询:

DBCC FREEPROCCACHE
DBCC FREESYSTEMCACHE('ALL');
DBCC DROPCLEANBUFFERS
GO
SELECT cp_areaCode FROM testTable;
GO
SELECT c_areaCode …
Run Code Online (Sandbox Code Playgroud)

sql-server

12
推荐指数
1
解决办法
1390
查看次数

MySQL 中 Host 'host_name' 被阻塞的原因是什么?

当我使用错误的密码连接到mysql服务器,并且测试计数结束时max_connect_errors,我发现Aborted_connects我测试的计数也出现了,但主机仍然没有被阻塞。

那么Aborted_connects超过max_connect_errorsthen host_name 是否被阻止?

mysql

12
推荐指数
1
解决办法
4万
查看次数

如何在没有表的数据库中存储数据?

我在学校学到的只是将数据保存到表中的 SQL。现在我正在研究一个数据存储在 XML 文件中的项目。此外,每个 XML 都包含对可视文件 (JPEG) 的引用。

XML 本身包含一千多个坐标点,以及有关数据的附加信息。

在我看来,将这些信息存储在表格中是没有意义的。此外,我也无法使用 SQL 存储 JPEG 文件。

什么是合适的解决方案,或者我这边的推理是否有错误?

如您所见,我对数据库很陌生。因此,欢迎任何建设性的建议、链接和建议。

xml database-design

12
推荐指数
2
解决办法
2802
查看次数

社交网络/知识库社区的数据库建议?

我正在为一个我想在夏天开始的新项目研究各种数据库类型和 DBMS。

我已经在 MySQL 和 postgreSQL 中构建了系统,现在我想扩展我在数据库方面的知识和经验。

我的项目将是一种社交网络/聚合知识的东西。(还没有开发出一个术语来描述它)。

我一直在看:

  • Cassandra(使用自己的查询语言类型);它似乎有利于功能丰富的内容和提供高性能查询执行。但是我不太热衷于它,因为它需要一个 java 环境才能工作,我更愿意与 Oracle 无关。
  • MongoDB(noSQL 类型的 DBMS);强大的可扩展性,但是您将失去已在成熟的 SQL 语言上可用的所有功能,例如业务信息查询。

系统要求:

  • 数据文本、日期、时间、xml、小整数、blob、
  • 结构/行为:规范化 3NF、非实时、关系、可扩展、健壮
  • 环境: unix/linux,无JAVA!,最好在C上运行

我想知道您是否可以指出我应该研究的任何其他数据库系统。

我也看过对象关系数据库,我非常喜欢它们与 PHP 对象(PDO)一起工作的想法,但是它们的性能似乎有点差。

鉴于这里将有 DBA,对您操作过的这些系统的任何反馈都将不胜感激。

谢谢

nosql performance database-recommendation scalability

12
推荐指数
2
解决办法
9844
查看次数