数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

1
在Postgres中优化并发更新
我正在运行并发Postgres查询,如下所示: UPDATE foo SET bar = bar + 1 WHERE baz = 1234 每个查询都会影响固定的K个行数,而且我找不到一种方法来强制更新行的顺序,最终导致死锁。当前,我通过手动执行顺序来解决此问题,但这意味着我必须执行比平时更多的查询,同时还将搜索复杂度从O(log N + K)提升到O(K log N)。 有没有一种方法可以提高性能而又不会导致死锁?我怀疑只要Postgres以与扫描行相同的顺序更新行,就可以用(baz)索引替换索引(baz, id),这是值得追求的方法吗?

1
ALTER TABLE…从常规表切换到分区表失败
下面的代码执行以下操作: 在C:\ TEMP中创建一个数据库play_partition 创建两个相同的分区表play_table和archive_play_table 将play_table分区1切换到archive_play_table分区1 在与play_table分区2相同的文件组上,创建一个新的未分区表temp_table,其结构与play_table相同。 将play_table_partition 2切换到temp_table 尝试将temp_table切换回play_table分区2并失败 消息4982,级别16,状态1,第64行ALTER TABLE SWITCH语句失败。检查源表'play_partition.dbo.temp_table'的约束是否允许目标表'play_partition.dbo.play_table'上分区2定义的范围所不允许的值。 为什么会失败? 我正在使用SQL Server 2014(企业版试用版)。 问候, 科林·戴利 http://www.colindaley.com/translator /* Playing with partitioned tables */ USE master; GO DROP DATABASE play_partition; GO CREATE DATABASE play_partition ON PRIMARY( NAME = play_partition , FILENAME = 'C:\TEMP\play_partition.mdf') ,FILEGROUP play_fg1( NAME = play_fg1 ,FILENAME …

2
如何在/etc/my.cnf文件中使binlog-format = ROW成为启动默认值?
我可以运行查询SET GLOBAL binlog_format ='ROW',它适用于该会话。 停止并重新启动MySQL后,如何使该设置生效? 注意:我使用的是MySQL 5.5.19版本(带有Moodle),我刚刚从MyISAM升级到InnoDB,因此需要此新设置。 我尝试将这两个命令(分别)添加到my.cnf:binlog-format = ROW和binlog_format = ROW,但都不起作用。每次更改my.cnf时,我都会停止并重新启动MySQL。 我未设置此错误而得到的错误是邪恶的错误消息: 调试信息:无法执行语句:由于BINLOG_FORMAT = STATEMENT,并且至少一个表使用了仅限于基于行的日志记录的存储引擎,因此无法写入二进制日志。当事务隔离级别为READ COMMITTED或READ UNCOMMITTED时,InnoDB仅限于行记录。
9 mysql  innodb  my.cnf 

1
SQL Server升级破坏了数据库快照后,如何“删除”数据库快照
我正在处理SQL Server升级到2014后无法删除数据库快照的问题。快照已失效,但不能删除。 现在,尽管“连接”项中的注释令人失望,但我认为此问题最终将得到解决。但是,我需要尽快处理。 有没有办法删除由于该错误而无法删除的数据库快照?我担心我已经用尽了所有有据可查的手段来做到这一点。可能需要对系统表进行未记录的修改。有没有一种方法可以强制删除数据库(快照)?

3
“将数据库部署到SQL Azure”任务丢失
我最近在拥有的工作站上安装了SQL Server 2014 Express,并且正在尝试将其部署到SQL Azure。我之前在使用SQL Server 2012 Express的以前的工作站上通过以下操作完成了此操作: 右键单击数据库>任务>“将数据库部署到SQL Azure” 在SQL Server 2014上,该选项完全消失,取而代之的是一个新选项:“将数据库部署到Windows Azure VM” 我无法弄清楚为什么缺少部署到SQL Azure的选项。SQL Server 2014是否需要单独安装某些东西?根据我在网上阅读的内容,这两个选项都应该在2014年版中同时出现。Microsoft是否为SQL Server 2014 Express删除了此选项?

2
将某些表从一个postgres数据库复制到另一个数据库
我遇到以下情况:我有三台运行postgresql数据库的机器。一台计算机保存客户帐户信息(称为此计算机C),其他两台计算机保存客户日志记录信息(称为这些L1和L2)。拆分的原因是将负载分散到多台计算机上(因此某些客户端将日志记录信息发送到L1,一些客户端将日志信息发送到L2 ...,也许还有一些时间将L3,L4等)。 检索日志记录信息时,原则上,我希望能够在Ln上的日志记录表和C上的客户帐户表之间进行JOIN。实际上,我无法像这样进行JOIN(即使我可以,以避免加载C)。 我的想法是将C上的表复制到L1,L2,...中的每个表上,以便进行连接。就C中的表而言,C是主机,而L1,L2,...是从机。但是对于L1,L2上的其他表,...这些机器是主计算机。它不完全是主-主复制,也不完全是主-从。 可以说服postgres(我正在运行9.1)复制做到这一点,或者如果没有,那么是否有其他软件包可以完成这项工作。在万不得已的情况下,我可以编写一些代码来定期同步表(我可以忍受一些延迟),但是最好不要这样做! 提前致谢。

1
如何使用pgAdmin 3编辑`postgresql.conf`?
如何使用pgAdmin应用程序编辑“ postgresql.conf”文件? 使用Postgres 9.3.x上的pgAdmin 1.18.1,当我选择File>时Open postgresql.conf,会出现一个文件选择器对话框。而且,是的,我以超级用户“ postgres”的身份连接到pgAdmin。 我知道我已经在旧版本的Postgres中做到了。

2
持续扫描需要0秒或2-3分钟
像下面这样的查询(保证不会返回任何行)在我们的其中一台服务器上花费了0到160秒的时间: select col1, col2, col3 from tab1 where 0 = 1 两周前,这种情况每隔48小时发生了六次。上周,同一查询花费了约0秒。我有应用程序SQL的日志,但尚未发现任何可疑对象。此外,我认为顶级0/0 = 1的类型查询从未命中数据页,因此它应该能够抵抗行/页/表级数据锁吗?任何(已知)SQL都不会涉及该架构。 由于问题不一致,并且服务器承受的负载非常重,因此我想在附加SQL事件探查器之前了解发生的情况的理论。在这些延迟期间,其他查询可以正常运行。应用程序中的一个已知问题是大量动态创建的SQL查询-在48小时内大约有200k唯一查询,总共850k(记录的)查询,这会引起这样的问题吗? 该服务器运行SQL Server 2005标准版,96 GB RAM,SAN上的磁盘和4个CPU / 16核。数据库文件和文件组已经过优化,应该没有问题(但是我们正在分别研究)。 任何在哪里看的指针都将不胜感激。 编辑:完美!重播查询以添加执行计划,这花了1分钟35秒。这是执行计划和显示查询持续时间的屏幕截图: 编辑2:统计第二次运行的时间详细信息。现在似乎一直很慢,因此我们将附加探查器和perfmon: SQL Server Execution Times: CPU time = 0 ms, elapsed time = 97402 ms. SQL Server parse and compile time: CPU time = 0 ms, …

1
服务帐户使用数据库邮件需要什么权限?
我有一个在托管服务帐户下运行的SQL Server 2012实例。我已经使用一个帐户配置了数据库邮件,并尝试发送测试电子邮件,但是服务器的事件日志中出现了一些错误: 数据库引擎实例= MYINSTANCE;邮件PID = 2132;错误消息:对数据库的更新失败。原因:对对象'sysmail_logmailevent_sp',数据库'msdb',模式'dbo'的EXECUTE权限被拒绝。 数据库引擎实例= MYINSTANCE;邮件PID = 2212; 异常类型:Microsoft.SqlServer.Management.SqlIMail.Server.Common.BaseException消息:数据库读取失败。原因:对对象'sp_readrequest',数据库'msdb',模式'dbo'的EXECUTE权限被拒绝。数据:System.Collections.ListDictionaryInternal TargetSite:Microsoft.SqlServer.Management.SqlIMail.Server.Objects.QueueItem GetQueueItemFromCommand(System.Data.SqlClient.SqlCommand)帮助链接:NULL来源:DatabaseMailEngine 如果我使运行SQL Server的帐户成为sysadmin,则该错误消失,邮件成功发送。但是,我所做的所有研究都表明,赋予此帐户数据库DatabaseMailUserRole角色msdb应该足够。我这样做了,仍然收到相同的错误。 我在BOL中查看了一下,但找不到任何东西。

1
pgBouncer效果很好,但偶尔变得不可用
我正在繁忙的postgres 9数据库前面运行pgBouncer。在大多数情况下,它都可以正常工作。但是每隔几个小时,我就会收到来自应用程序的错误电子邮件,以及来自psycopg2的异常消息: OperationalError('无法连接到服务器:无法分配请求的地址服务器是否在主机“ neo-hulk”上运行并接受端口6432上的TCP / IP连接?”) 这是一个Python应用程序,其中有许多芹菜工作者正在运行任务。当这些错误到达时,我检查pgbouncer db,并且池大小在限制范围内。经过一些试验后,我将池的最大大小设置为400,池的大小设置为200。池模式是“会话”(请求大部分是自动提交的,几乎没有事务)。 是什么使pgBouncer像这样“消失”?它仅在短时间内(总的来说,与处理的大量请求相比,我们谈论的是很少的请求),但是那些失败的请求很重要。 谢谢!

1
mdf和ldf的可用空间与数据库的可用空间不匹配
在SSMS中,我看到了文件大小相关的属性,并在下面找到了一个数据库的详细信息。此处的值与其他属性不匹配。此处mdf,ldf的大小和总大小与每个窗口下的其他值匹配。但是,如果添加了mdf和ldf的可用空间,则它不等于收缩数据库窗口中显示的可用空间和数据库属性中显示的可用空间。对于任何数据库都是如此。为什么会这样呢?请任何人解释这背后的逻辑? 在数据库属性下: 大小:91.31 MB 可用空间:13.40 MB 在数据库文件属性下: mdf大小:17 MB ldf大小:75 MB 在收缩数据库下: 当前分配的大小:91.31 MB 可用空间:13.40 MB 在收缩文件下,用于数据文件: 当前分配的大小:16.38 MB 可用空间:12.63 MB 在收缩文件下-用于日志文件: 当前分配的大小:74.94 MB 可用空间:55.62 MB

2
我应该在SQL Server中嵌套依赖的外部联接吗?
我听说过与此相关的信息不一,并希望能提出规范或专家意见。 如果我有多个LEFT OUTER JOIN,每个都依赖于最后一个,嵌套它们会更好吗? 对于一个人为的示例,JOINto MyParent取决于JOINto MyChild:http : //sqlfiddle.com/#!3/31022/5 SELECT {columns} FROM MyGrandChild AS gc LEFT OUTER JOIN MyChild AS c ON c.[Id] = gc.[ParentId] LEFT OUTER JOIN MyParent AS p ON p.[id] = c.[ParentId] 与http://sqlfiddle.com/#!3/31022/7相比 SELECT {columns} FROM MyGrandChild AS gc LEFT OUTER JOIN ( MyChild AS c LEFT …


2
sp_reset_connection花很长时间执行的可能原因是什么?
sp_reset_connection从SQL Server Profiler看,为什么系统存储过程要花几毫秒的时间来执行? 我从使用SQL Server Profiler的生产系统中进行了简单的跟踪,然后使用SqlNexus对其进行了分析。SqlNexus指示sp_reset_connection具有最高的累积持续时间-占总跟踪的33%。观察到的持续时间为0-7秒(12到6,833,270微秒),但平均为0.956s。 我了解到池连接被重用时会调用sp_reset_connection。我已经看到有人暗示这可能是由于无关的痕迹而发生的,但事实并非如此。 我读过了 了调用sproc时服务器在做什么,但是我不认为在这种情况下任何问题都会出现-代码不会留下未清除的开放式事务或庞大的临时表。 我也看着 /server/199974/sp-reset-connection-taking-a-long-time-to-run,但这没有帮助。 编辑(2013-12-23): 在所有情况下,读和写均为0,CPU几乎始终为0(仅两个实例,两个非零CPU都在16ms处)。

3
从sql查询结果中复制大量数据
在我的sql server 2008中,运行查询后的数据返回量非常大,以百万计。我尝试复制,但是它给出了异常sql内存错误。您能告诉我们如何复制整个数据并将其粘贴到Excel中吗? 我不想将其导出到txt文件,因为数据没有对齐。所以我想手动复制并将其粘贴到Excel中。请让我知道该解决方案

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.