开发人员可能导致数据库服务器崩溃的最大“错误”是什么?

时间:2011-11-01 16:34:44

标签: database

我想知道开发人员可能犯的最常见错误,这些错误可能导致数据库服务器崩溃和/或无响应和/或中止。

我现在已经遇到过这个问题,而且我想知道编写查询的开发人员(通常是没有经验的人)会遇到的常见错误以及访问数据库服务器的脚本会遇到什么错误。

我并不是从DBA的角度来看待事情,而是希望我可以为每天必须使用数据库的开发人员(像我一样)创建一个简单的列表,其中包含一些“良好实践”。< / p>

3 个答案:

答案 0 :(得分:1)

如果开发人员可以强制数据库服务器崩溃,我会非常担心。我希望服务器足够强大以抵御这种滥用!

然而,开发人员通常可以通过两个特定的行动引起一定程度的悲伤:

  1. 编写返回大量数据的查询。当开发人员选择获取所有可用数据然后在客户端执行过滤/排序等时(通过客户端,我的意思是数据库的客户端),通常会发生这种情况。出于这个原因(以及其他),让DBA审查与数据库的交互并建议有效的查询实践,SQL等以避免这种情况是个好主意。
  2. 消耗所有可用的数据库连接。这通常发生在数据库连接在完成时未关闭的情况下,并且通常可以通过使用db框架来缓解(例如,从Java角度来看,Spring-JDBC)

答案 1 :(得分:1)

我看到崩溃/挂起的主要原因,从最频繁到最不频繁:

  1. 经常使用的查询,其中包含大量JOIN或返回大量数据。
  2. 非常IO密集型查询,例如MySQL上的LOAD DATA INFILE
  3. 大量使用导致大量积压的表锁。
  4. 机器内存耗尽,DBMS进程被终止,以防止整个机箱崩溃。
  5. 某些客户端代码会使DBMS中的连接过多,从而导致合法的客户端连接超时。
  6. 由于错误导致DBMS崩溃。很少见,但很难追查。

答案 2 :(得分:0)

我注意到,如果事务被提交或回滚,可能会导致系统无响应。但是我认为如果只提交了一两个事务,这对整个服务器都没有影响。

然而,我可以想象如果发生了很多事情,它可能会超载它。但这仅仅是我对开发人员的看法。