数据库管理员

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

7
复制表格的完整结构
使用某些方法,当您创建表的副本时,会丢失索引,PK,FK等。例如,在SQL Server中,我可以说: select * into dbo.table2 from dbo.table1; 这只是表的简单副本;缺少所有索引/约束。如何复制表结构(不使用备份)? 我主要是希望手动执行此操作,但是如果不可能,我将接受任何解决方案。

2
Mongodump:无法识别的字段“快照”
我正在使用mongo工具中的mongodump下载我的服务器的备份。但是,当我运行命令时,该命令将返回“无法识别的字段'快照'”。 完整的错误是: Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'. Mongodump --version返回: mongodump version: built-without-version-string git version: built-without-git-spec Go version: go1.7.3 os: linux arch: amd64 compiler: gc OpenSSL version: OpenSSL 1.0.2g 1 Mar …


3
真的可以将listen_addresses设置为列表吗?
我有一个IP地址为192.168.0.192的VM,运行的是postgreSQL。 如果我指定 listen_addresses = '*' 然后我可以从另一个位于192.168.0.191的虚拟机和本地主机进行连接。 但是我似乎无法使用列表来告诉 postgreSQL使用这两个地址。如果我将listen_addresses更改为列表: listen_addresses = '192.168.0.191, localhost' 那么我将无法从192.168.0.191连接。 我注意到stackexchange上的几乎所有示例都将listen_addresses设置为“ *”。这是因为列表形式不起作用吗?
32 postgresql 

2
超级用户不允许登录
我使用以下命令创建了超级用户门户 create role portal with superuser password 'portal' 当我尝试使用门户网站用户登录postgres时,在Rails中收到以下错误。 FATAL: role "portal" is not permitted to log in 我不知道发生了什么事。 当然,我可以使用login命令更改用户以使门户网站用户能够登录。我想了解为什么超级用户无法登录。
32 postgresql 

1
XML索引的性能非常奇怪
我的问题基于此:https : //stackoverflow.com/q/35575990/5089204 为了给出答案,我做了以下测试场景。 测试场景 首先,我创建一个测试表并用100.000行填充它。一个随机数(0到1000)应导致每个随机数约100行。此数字放入varchar列中,并作为XML中的值。 然后,我像OP那样进行呼叫,需要使用.exist()和.nodes()进行第二次调用,但是第二步的优势不大,但是两者都需要5到6秒钟。实际上,我进行了两次调用:第二次以交换顺序进行,搜索参数略有变化,并使用“ // item”而不是完整路径,以避免通过缓存的结果或计划产生误报。 然后创建一个XML索引并执行相同的调用 现在-真正让我惊讶的是!- .nodes具有完整路径的速度比以前(9秒)要慢得多,但是.exist()降低到半秒,而具有完整路径的时间甚至可以降低到约0.10秒。(同时.nodes()具有短的路径比较好,但仍远远落后于.exist()) 问题: 我自己的测试简而言之:XML索引会极大地破坏数据库。它们可以极大地加快处理速度(例如,编辑2),但也会降低查询速度。我想了解它们的工作原理...什么时候应该创建XML索引?为什么.nodes()有了索引会比没有索引更糟糕?如何避免负面影响? CREATE TABLE #testTbl(ID INT IDENTITY PRIMARY KEY, SomeData VARCHAR(100),XmlColumn XML); GO DECLARE @RndNumber VARCHAR(100)=(SELECT CAST(CAST(RAND()*1000 AS INT) AS VARCHAR(100))); INSERT INTO #testTbl VALUES('Data_' + @RndNumber, '<error application="application" host="host" type="exception" message="message" > <serverVariables> <item name="name1"> <value string="text" …

1
DBA从事新工作的第一天-检查备份和安全性-如何?还有什么要检查的?
通常,当我在新环境中启动时,我倾向于检查备份在哪里,何时进行了最后一次完全备份,何时应用了最后一次还原,还检查了安全性。 我这样做的方法是通过T-SQL。 检查备份 ;with Radhe as ( SELECT @@Servername as [Server_Name], B.name as Database_Name, ISNULL(STR(ABS(DATEDIFF(day, GetDate(), MAX(Backup_finish_date)))), 'NEVER') as DaysSinceLastBackup, ISNULL(Convert(char(11), MAX(backup_finish_date), 113)+ ' ' + CONVERT(VARCHAR(8),MAX(backup_finish_date),108), 'NEVER') as LastBackupDate ,BackupSize_GB=CAST(COALESCE(MAX(A.BACKUP_SIZE),0)/1024.00/1024.00/1024.00 AS NUMERIC(18,2)) ,BackupSize_MB=CAST(COALESCE(MAX(A.BACKUP_SIZE),0)/1024.00/1024.00 AS NUMERIC(18,2)) ,media_set_id = MAX(A.media_set_id) ,[AVG Backup Duration]= AVG(CAST(DATEDIFF(s, A.backup_start_date, A.backup_finish_date) AS int)) ,[Longest Backup Duration]= …

6
如何尽可能快地更新MySQL单个表中的1000万行以上?
对大多数表使用MySQL 5.6和InnoDB存储引擎。InnoDB缓冲池大小为15 GB,Innodb DB +索引约为10 GB。服务器具有32GB RAM,并且正在运行Cent OS 7 x64。 我有一张大表,其中包含大约一千万条记录。 我每24小时从远程服务器获取一个更新的转储文件。该文件为csv格式。我无法控制该格式。该文件约为750 MB。我尝试将数据逐行插入MyISAM表中,这花了35分钟。 我只需要从文件中取出10-12行中的每行3个值,然后在数据库中更新它。 实现这样的最佳方法是什么? 我需要每天这样做。 当前Flow是这样的: mysqli_begin_transaction 逐行读取转储文件 逐行更新每个记录。 mysqli_commit 以上操作大约需要30-40分钟才能完成,在执行此操作的同时,还有其他更新正在进行中 超过了锁定等待超时;尝试重新启动事务 更新1 使用加载新表中的数据LOAD DATA LOCAL INFILE。在MyISAM中,花38.93 sec了7分钟5.21秒,而在InnoDB中,花了7分钟。然后我做了: UPDATE table1 t1, table2 t2 SET t1.field1 = t2.field1, t1.field2 = t2.field2, t1.field3 = t2.field3 WHERE t1.field10 = t2.field10 Query OK, …

2
哪一种效率更高:从链接服务器中选择还是插入到链接服务器中?
假设我必须将数据从一台服务器导出到另一台(通过链接的服务器)。哪种说法会更有效? 在源服务器中执行: INSERT INTO [DestinationLinkedServer].[DestinationDB].[dbo].[Table] SELECT a, b, c, ... FROM [dbo].Udf_GetExportData() 或在目标服务器中执行: INSERT INTO [dbo].[Table] SELECT a, b, c, ... FROM OPENQUERY([OriginLinkedServer], 'SELECT a, b, c, ... FROM [OriginDB].[dbo].Udf_GetExportData()') 哪一个会更快并且总共消耗更少的资源管理器(源服务器和目标服务器)?两台服务器都是SQL Server 2005。

2
在哪里可以找到学习数据库的调优练习?
作为开发人员,DBA通常负责在数据库级别解决性能问题,因此我们在诊断,调整,重构查询等方面经验不足。 我正在寻找一个包含一堆表,数据,查询,触发器,SP等的数据库,其中存在故意的性能问题,希望有一系列练习可以尝试识别和解决这些问题。理想情况下,它将在MS SQL服务器上。 有人知道这种事吗?

1
如何在SQL Server中附加数据库?
有关在SQL Server中附加数据库的一些常见问题: 附加或分离数据库是什么意思? 如何分离数据库? 如何附加数据库? 附加并重建日志是什么意思? 如何在SQL Server Express中做到这一点? 我什么时候可以考虑拆装? 有任何风险或警告吗? 在SQL Server的版本之间附加附件该怎么办?(企业标准?2000到2008?2012到2008?)
32 sql-server 





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.