数据库管理员

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

5
PostgreSQL:如何仅从数据库备份一个模式并在另一台服务器上还原它
我有一个名为“ A”的数据库,其中有两个模式“ B”和“ C”。我想在另一台服务器上备份和还原架构“ B”吗?不知道该怎么做,因为我是Postgres的新手。我是否必须在名称为“ A”的新服务器上创建新的数据库,然后在其上还原模式“ B”。请帮助命令。 --- 来自对彼得回答的评论的信息: 我想备份和还原架构“ B” +数据。其次,我忘了提到在Ubuntu 12.04上运行的Postgresql 9.1

2
当数据“自然可分区”时,跨机器对PostgreSQL进行分区的现代方法是什么?
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 在进入“ NoSQL”领域几年后,现在我遇到了一个本质上非常“关系”的问题。今天,我看到的数据存储区与以往完全不同。诸如Riak之类的事情以一种无法忍受的单点故障,“需要维护的停机”之类的方式宠坏了我。当然,(或者我希望),我还没有完全失去理智。这是一个个人项目,尚未(或尚未)有很高的要求。 大多数分片解决方案都没有给我我想要的东西(至少乍一看),可能是因为我的问题很“容易”解决。至少在概念层面(忽略RDBM本身带来的限制)。 我有少量的“共享”数据,可以自由复制。它没有硬一致性的要求。可以将其存储在类似发电机的数据库中,并且可以无限扩展。但是,如果可能的话,我仍然想使用一个数据库。 我有很多“每用户”数据。那就是-很多用户,每个用户拥有绝对合理大小的数据,确实适合存储在单个PostgreSQL节点上。我们正在谈论的最多是数千条记录。 我永远不需要查询跨用户,也不需要跨用户原子性。 这听起来非常容易实现。至少当我用“ NoSQL眼睛”看时。 这是我幼稚的入门想法: 在极端情况下,我可以将整个用户序列化为Riak中的单个键/值。当然,对数兆字节的数据进行持续的反序列化会很慢,这就是我考虑使用PostgreSQL的原因。很多Riak K / V都是不行的,因为我需要每个用户数据内的原子性/事务性。 我可以为每个用户使用一个SQLite数据库,并使用GlusterFS之类的文件来实现冗余/可用性。如果我无法使用PostgreSQL找到同样好的东西,这可能就是我要选择的解决方案。优点:可以很好地缩小/放大比例;缺点:我比SQLite更喜欢PostgreSQL的类型和严格性 因此,理想情况下,我将从PostgreSQL分片解决方案中请求什么: 自动在每个用户的数据(在不同的计算机上)周围保留几个副本。能够按用户/分片动态切换主节点(如果先前的主节点出现故障)。 通过添加/删除服务器节点,可以动态放大/缩小规模。通常就像Riak一样能够做到。 不需要我的应用程序知道与哪些节点以及何时与之对话。

1
为什么SQL Server 2012 Express在服务器上使用9.5GB的RAM?
我正在构建一个计划将SQL Server 2012 Express嵌入为主要数据存储的应用程序。在我的开发机(带有3GB RAM的Win7-32​​)上进行测试时,我从未观察到该sqlservr.exe进程使用超过1GB的RAM,正如我从发布的SQL Server Express版的硬件扩展限制中所期望的那样。 然后,我将应用程序移动到服务器级计算机(具有16GB RAM的Win Server 2008R2 64位)上以评估其性能,并惊讶地发现该sqlservr.exe过程迅速扩展到大约9.5GB RAM并停留在那里。 我重新启动了几次,以查看是否有效果,但是每次,该过程迅速恢复到约9.5GB。现在,我当然很高兴SQL Server Express使用我的RAM,但是我想知道这是否是预期的行为,这样我就不会再依赖基于不正确的RAM使用情况的性能级别了。 仅供参考,根据我的说法SELECT @@VERSION,服务器计算机上SQL Server的版本为: Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Oct 19 2012 13:38:57 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 我的9.5GB号码来自任务管理器中的“私人工作集”号码。来自DBCC memorystatus(尽管在现在处于空闲状态的服务器上)输出的第一张表如下: …

2
如何保留SQL Server存储过程修订的历史记录
注意:我并不是在问完整的版本控制。 有没有办法自动保留SQL Server上存储过程的历史记录。 与Google文档自动保留文档版本历史记录以及维基百科自动保留文章版本历史记录相似。 我不希望更新存储过程的用户也必须维护存储过程的存储库。这是太多的工作,人们不会做。 希望这是我可以在SQL Server中启用的功能... (实际上,存储过程是指函数,触发器等。基本上,所有内容都在“可编程性”下。) 我首先发布到/programming/14522224/how-to-keep-history-of-sql-server-stored-procedure-revisions,因为我怀疑它将在那里获得更多的意见。

4
有没有一种方法可以在TSQL中生成表创建脚本?
有没有一种方法可以完全通过T-SQL从现有表中生成创建脚本(即不使用SMO,因为T-SQL无法访问SMO)。假设一个存储过程接收一个表名并返回一个包含给定表的创建脚本的字符串? 现在,让我描述一下我所面临的情况,因为可能有不同的方法来解决这个问题。我有一个包含数十个数据库的实例。这些数据库都具有相同的架构,所有相同的表,索引,等等。它们是作为第三方软件安装的一部分创建的。我需要一种与他们合作的方式,以便可以以临时方式汇总来自他们的数据。dba.se的好人已经在这里为我提供了帮助。如何在其他数据库中创建触发器? 当前,我需要找到一种从所有数据库的表中进行选择的方法。我已将所有数据库名称记录到一个名为的表中,Databasees并且编写了以下脚本以对所有数据库名称执行select语句: IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp select * into #tmp from Database1.dbo.Table1 where 1=0 DECLARE @statement nvarchar(max) = N'insert into #tmp select * from Table1 where Column1=0 and Cloumn2 =1' DECLARE @LastDatabaseID INT SET @LastDatabaseID = 0 DECLARE @DatabaseNameToHandle varchar(60) DECLARE @DatabaseIDToHandle int SELECT TOP …

2
LIKE使用索引,CHARINDEX不使用索引吗?
这个问题与我的旧问题有关。以下查询需要10到15秒才能执行: SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id] FROM [company].dbo.[customer] WHERE (Charindex('123456789',CAST([company].dbo.[customer].[Phone no] AS VARCHAR(MAX)))>0) 在一些文章中,我看到使用索引CAST并CHARINDEX不会从中受益。也有一些文章说使用LIKE '%abc%'将不会从索引中受益,而LIKE 'abc%'将会: http://bytes.com/topic/sql-server/answers/81467-using-charindex-vs-like-where /programming/803783/sql-server-index-any-improvement-for -like-queries http://www.sqlservercentral.com/Forums/Topic186262-8-1.aspx#bm186568 就我而言,我可以将查询重写为: SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id] FROM [company].dbo.[customer] WHERE [company].dbo.[customer].[Phone no] LIKE '%123456789%' 此查询提供与上一个相同的输出。我为column创建了一个非聚集索引Phone no。当我执行此查询时,它将在1秒内运行。与之前的14秒相比,这是一个巨大的变化。 如何LIKE '%123456789%'从索引中受益? 为什么列出的文章指出它不会提高性能? 我尝试重写要使用的查询CHARINDEX,但是性能仍然很慢。为什么CHARINDEX在LIKE查询中没有从索引中受益呢? 使用查询CHARINDEX: SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id] FROM [Company].dbo.[customer] WHERE ( Charindex('9000413237',[Company].dbo.[customer].[Phone no])>0 ) 执行计划: 使用查询LIKE: SELECT [customer].[Customer …

3
MySQL复制从站是否应该设置为只读?
通过遵循本指南,我已经在Percona Server 5.5上运行了复制,并且想知道是否应该将其添加read-only=1到从属服务器中my.cnf以使其只读。 该指南为mysql表设置了复制,以便复制用户,但是我主要是使用从属服务器来获取mysqldumps,在紧急情况下将其重新配置为主服务器,因此我认为我们不需要(或应该)启用写入功能它不断吗?

3
如何与有特权的孩子建立一对多关系?
我想建立一对多关系,其中对于每个父母,一个或零个孩子被标记为“收藏夹”。但是,并不是每个父母都会有一个孩子。(例如,将父母视为本网站上的问题,将孩子视为答案,将喜欢的事物作为接受的答案。)例如, TableA Id INT PRIMARY KEY TableB Id INT PRIMARY KEY Parent INT NOT NULL FOREIGN KEY REFERENCES TableA.Id 我看到的方式可以将以下列添加到TableA中: FavoriteChild INT NULL FOREIGN KEY REFERENCES TableB.Id 或TableB的以下列: IsFavorite BIT NOT NULL 第一种方法的问题在于它引入了可为空的外键,据我所知,它不是标准化形式。第二种方法的问题是,需要做更多的工作以确保最多一个孩子是最爱的。 我应该使用哪种标准来确定使用哪种方法?或者,还有其他我没有考虑的方法吗? 我正在使用SQL Server 2012。

5
如何生成tnsnames.ora文件以连接到Oracle数据库?
此问题是从Stack Overflow 迁移而来的,因为可以在Database Administrators Stack Exchange上回答。 迁移 7年前。 我已经安装了Oracle 11g,可以连接sysman到Oracle数据库,但是tnsnames.ora找不到任何文件。 我需要自己生成tnsnames.ora文件吗?如果是这样,我应该放在哪里?如果没有,Oracle如何为我生成它?如果确实需要生成它,那么该文件的合适语法是什么?
22 oracle 

1
如何使用pgAdmin3连接到Ubuntu上的远程PostgreSQL数据库?
我正在尝试在Ubuntu计算机上设置PostgreSQL数据库。我希望能够使用pgAdmin3从远程计算机访问它。我该如何设置? 我已经使用以下命令在Ubuntu上安装了PostgreSQL数据库: sudo apt-get install postgresql 我/etc/postgresql/9.1/main/pg_hba.conf有这行: host all all all password 因此它应该接受来自所有IPv4地址的连接,并且应该以明文形式发送密码(这是出于开发原因)。 如果运行此命令以查看正在运行的服务: sudo netstat -tulpn 我可以看到这些行,这表明PostgreSQL在默认端口上接受连接: tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 3561/postgres 当我尝试从同一本地网络上的远程计算机连接到该PostgreSQL服务器时,出现以下错误消息: 服务器不听 服务器不接受连接:连接库报告 无法连接到服务器:连接被拒绝服务器是否在主机“ 10.0.1.7”上运行并接受端口5432上的TCP / IP连接? 我用作用postgres户名,没有密码。但我也尝试过使用postgres密码。在本地服务器上,我可以使用以下命令登录: sudo -u postgres psql postgres 如何使用pgAdmin3从远程计算机连接到在Ubuntu上运行的PostgreSQL数据库?

1
SQL查询组合,无重复
我需要一个可以在(或作为)函数中使用的查询,并检索n值的所有组合。我需要长度为k的所有组合,其中k = 1..n。 扩展的样本输入和结果,因此输入具有3个值而不是2个-但是,输入值的数量可能从1到n不等。 示例:输入:具有多行一列中的值的表 Value (nvarchar(500)) ------ Ann John Mark 输出#1:表,其值串联在一栏中 Ann John Mark Ann,John John,Mark Ann,Mark Ann,John,Mark

3
频繁查询缓存失效的开销值得吗?
我目前正在使用一个MySQL数据库,在该数据库中,我们从查询缓存中看到大量无效信息,这主要是由于在许多表上执行的INSERT,DELETE和UPDATE语句数量很多。 我要确定的是,将查询缓存用于针对这些表运行的SELECT语句是否有任何好处。由于它们是如此之快地失效,在我看来,最好的办法是仅对这些表的SELECT语句使用SQL_NO_CACHE。 频繁失效的间接费用是否值得? 编辑:在下面的用户@RolandoMySQLDBA的请求下,这是MyISAM和INNODB上的信息。 创新数据库 资料大小:177.414 GB 索引大小:114.792 GB 桌子大小:292.205 GB 我的ISAM 资料大小:379.762 GB 索引大小:80.681 GB 桌子大小:460.443 GB 附加信息: 版本:5.0.85 query_cache_limit:1048576 query_cache_min_res_unit:4096 query_cache_size:104857600 query_cache_type:开启 query_cache_wlock_invalidate:关闭 innodb_buffer_pool_size:8841592832 24GB RAM

2
如何设置Postgresql数据库以将日期永久显示为“ MDY”
如何在不运行的情况下将数据库设置为将“日期”显示为“ MDY”: SET datestyle = "ISO, MDY"; 每次我尝试访问它?我正在使用Postgresql版本9.1,Ubuntu 12.04。在安装数据库时,我的系统语言环境设置为en_CA.utf8,最近我将其更改为en_US.utf8。 show lc_CTYPE 返回:-> "en_CA.UTF-8" 但 show LC_CoLLATE 返回:-> "en_CA.UTF-8"

4
合并语句自身陷入僵局
我有以下过程(SQL Server 2008 R2): create procedure usp_SaveCompanyUserData @companyId bigint, @userId bigint, @dataTable tt_CoUserdata readonly as begin set nocount, xact_abort on; merge CompanyUser with (holdlock) as r using ( select @companyId as CompanyId, @userId as UserId, MyKey, MyValue from @dataTable) as newData on r.CompanyId = newData.CompanyId and r.UserId = newData.UserId and …

3
为什么“ LOAD DATA INFILE”比普通的INSERT语句快?
我读过一篇文章提到,通过使用该语句,可以从csv文件读取数据并将其插入数据库中,从而每秒可以完成60,000次插入LOAD DATA IN FILE。 为什么它与普通刀片不同? 编辑: 我通过只调用一条INSERT语句减少了往返行程: INSERT INTO tblname VALUES (NULL,2,'some text here0'),(NULL,2,'some text here1') ,(NULL,2,'some text here2'),(NULL,2,'some text here3') .....,(NULL,2,'some text here3000'); 那这个呢?
22 mysql  import  bulk 

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.