数据库管理员

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

2
阻止PostgreSQL在Ubuntu中启动
我使用的是PostgreSQL 9.2,启动系统(Kubuntu)时它将自动运行。 如何避免这种情况? 我需要手动启动它,并且我不希望它在无人值守的情况下启动,因为我需要查看控制台。

2
为什么我们需要在SQL Server中重建和重新组织索引
搜索互联网后,我找不到原因 为什么我们需要在SQL Server中重建和重新组织索引? 当我们重建和重组时,内部会发生什么? 网站上的一篇文章说: 当索引碎片大于40%时,应重建索引。当索引碎片在10%到40%之间时,应该重新组织索引。索引重建过程使用更多的CPU,并锁定数据库资源。SQL Server开发版本和企业版具有选项“联机”,可以在重建索引时将其打开。联机选项将在重建期间保持索引可用。 我不明白这一点,尽管它说WHEN要这样做,但是我想知道WHY我们是否需要重建和重组索引?


7
计算每个MySQL DB的磁盘空间使用量
我当前正在使用information_schema.TABLES来计算按数据库名称分组的磁盘总使用量,但是运行速度非常慢。在具有数百个数据库的服务器上,可能要花几分钟才能计算出来。 按数据库计算磁盘空间使用量的最快方法是什么?我应该只看文件系统吗?有没有一种方法可以加快information_schema?
28 mysql 

3
如何在SQL中强制执行一次写入然后只读的数据库表?
可能吗 我的用例是一个分类帐表,要求一旦创建一条记录,它就应该是只读的,即没有人能够编辑或删除它。这仅适用于分类帐表和与之有直接关系的表-同一模式中的其他表将正常进行更新/删除。 我的理解是,出于数据完整性的目的,应将这些类型的约束应用于数据库层,但是我找不到一种干净的,被广泛接受的方式来做这—这是一个用例,我会做得更好在应用层? 理想的方法是在普通的SQL中执行此操作,以便与使用的数据库平台无关,因为这可能会发生变化,但是我意识到这可能要求太多,因此是否需要为了与平台相关,首选MySQL的某种风格。 谢谢!
28 mysql  constraint 




6
查询以报告磁盘空间分配和已用空间
对于一个应用程序,我们总共使用6个数据库,并且在所有6个自动增长的数据库中(通过SAN存储)我们只能共享4TB的空间。 我想为单个数据库写一个查询(报告),以指示SQL Server Management Studio中“任务”>“收缩”>“数据库”选项下的“当前分配的空间”和“可用的可用空间”属性。 然后,我想将这些数字转换为TB并汇总每个数据库,以大致估算出我们还剩下多少空间。可以通过T-SQL查询访问这些字段吗?如果是这样,查询将是什么样?

7
为什么不能在MySQL中使用MEMORY存储引擎的原因是什么?
最近,我发现MySQL具有一个我不知道的“内存”引擎(我的大部分数据库工作是针对业余项目的,因此我会随时了解自己的需求)。看来此选项应该可以大大提高我的性能,所以我想知道它是否有任何缺点。我知道的两个是: 我需要有足够的RAM来容纳有问题的表。 如果机器关闭,表将丢失。 我认为#1应该不是问题,因为我正在使用AWS EC2,并且可以根据需要移到具有更多内存的实例类型。我相信我可以通过根据需要转储回磁盘来减轻#2的压力。 还有什么其他问题?内存引擎能否提供比MyISAM或InnoDB更差的性能?我认为我读到的东西与此引擎的索引不同;这是我需要担心的事情吗?

4
检查SQL Server数据库中是否存在用户
我正在使用SQL Server2012。我想在将用户添加到数据库之前检查用户是否存在。 这是我测试过的: USE [MyDatabase] GO IF NOT EXISTS (SELECT name FROM [sys].[server_principals] WHERE name = N'IIS APPPOOL\MyWebApi AppPool') Begin CREATE USER [IIS APPPOOL\MyWebApi AppPool] FOR LOGIN [IIS APPPOOL\MyWebApi AppPool] WITH DEFAULT_SCHEMA=[dbo] end ALTER ROLE [db_owner] ADD MEMBER [IIS APPPOOL\MyWebApi AppPool] GO 但是,SELECT name FROM [sys].[server_principals]如果该用户存在于中,则此代码不会返回MyDatabase。 如何检查用户是否存在MyDatabase?

2
同一SELECT列表中的参考列别名
我正在将旧的基于MS-Access的系统转换为PostgreSQL。在Access中,由SELECT组成的字段可以用作后面字段的方程式的一部分,如下所示: SELECT samples.id, samples.wet_weight / samples.dry_weight - 1 AS percent_water, 100 * percent_water AS percent_water_100 FROM samples; 当我在PostgreSQL中执行此操作时,Postgres会引发错误: 错误:列“ percent_water”不存在。 通过从子选择中进行选择,这是解决该问题的方法: SELECT s1.id, s1.percent_water, 100 * s1.percent_water AS percent_water_100 FROM ( SELECT samples.id, samples.wet_weight / samples.dry_weight - 1 AS percent_water FROM samples ) s1; 有没有像在第一个代码块中那样的捷径可以绕开复杂的嵌套?我也可以说100 * (samples.wet_weight / samples.dry_weight - …

3
RANK()和DENSE_RANK()是确定性的还是不确定性的?
根据官方Microsoft BOL DENSE_RANK是不确定的(RANK())。但是根据Itzik Ben-Gan的排名函数, “ ... RANK()和DENSE_RANK()函数始终是确定性的”。谁是对的? 到目前为止,我发现的是: Microsoft的定义 “确定性函数在每次使用一组特定的输入值并被赋予相同的数据库状态时,总是返回相同的结果。” 所以在理论表中,员工 Employee Salary Sue Right 1.00 Robin Page 1.00 Phil Factor 1.00 和员工2 Employee Salary Phil Factor 1.00 Sue Right 1.00 Robin Page 1.00 是相同的。但是排名函数返回不同的值: CREATE TABLE [dbo].[Employees]( --[ID] [int] IDENTITY(1,1) NOT NULL, [Employee] [varchar](150) NOT NULL, [Salary] [smallmoney] NULL, …
27 sql-server 


2
插入大量行的最快方法是什么?
我有一个数据库,在其中我将文件加载到临时表中,从该临时表中我有1-2个连接来解析一些外键,然后将这些行插入到最终表中(每月有一个分区)。我有大约34亿行用于三个月的数据。 使这些行暂存到最终表中的最快方法是什么?SSIS数据流任务(使用视图作为源并激活快速加载)或插入INTO SELECT ....命令?我尝试了“数据流任务”,并在5个小时内可以得到大约10亿行(8核/服务器上192 GB RAM),这对我来说感觉很慢。

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.