数据库管理员

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

3
MySQL缓慢使用内存,直到它开始使用交换
我正在运行1gb的RAM机架数据库服务器。由于某种原因,在大约2天的时间内,内存使用量从使用很少的交换空间变为使用100mb。如果我不重新启动sql,它将继续使用更多交换。(我的my.cnf文件如下所示,内存使用情况如下所示) 背景知识:我大约有50个活动数据库,这些数据库具有与使用INNODB的表相同的架构。我有几个使用MyISAM的流量很少的数据库。 在INNODB表上,我不使用持久连接。我还具有创建临时表的报告功能。(这可能会占用大量资源,但不会经常发生) 我正在使用CENTOS 6.3和mysql 5.5.28-log 即使我使用交换,性能仍然相当不错。我只是担心,如果我每隔几天不重新启动,就会遇到问题。 这是我大约两天的free -m日志:(第一条记录是在mysql重新启动之后) 12/26 2:08 PM EST total used free shared buffers cached Mem: 992 697 295 0 74 362 -/+ buffers/cache: 260 732 Swap: 976 15 961 12/26 4:10 PM EST [root@php-pos-db ~]# free -m total used free shared buffers cached Mem: 992 …

1
服务器崩溃后如何还原复制
我们在一个SQL Server 2005实例上有两个数据库,它们之间具有事务复制(作为文章有3个表)。该服务器既充当发布者又充当分发者。 然后服务器上的RAID发生故障。但是.mdf,在崩溃之前,我们设法分离并复制了几乎所有文件。 还原系统后,我们重新安装了SQL Server,还原了系统数据库(主数据库,模型数据库,msdb数据库)并将.mdf文件放置在相同的路径中。就这样开始了。 复制出现问题。尽管“ 本地订阅”文件夹包含有问题的订阅,但“ 本地出版物”文件夹为空。当我尝试添加新出版物时,我得到了: 新发布向导在检索发布名称时遇到一个或多个错误。 执行Transact-SQL语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo) 无效的对象名称“ dbo.syspublications”。(Microsoft SQL Server,错误:208) 我决定尝试删除左侧订阅(最终我设法做到了)并禁用服务器上的发布和分发,这给了我: SQL Server无法禁用“ someserver”上的发布和分发。 无效的对象名称“ dbo.syssubscriptions”。EXECUTE之后的事务计数表明缺少COMMIT或ROLLBACK TRANSACTION语句。上一个计数= 0,当前计数=1。EXECUTE之后的事务计数指示缺少COMMIT或ROLLBACK TRANSACTION语句。上一个计数= 0,当前计数=1。EXECUTE之后的事务计数指示缺少COMMIT或ROLLBACK TRANSACTION语句。上一个计数= 0,当前计数=1。EXECUTE之后的事务计数指示缺少COMMIT或ROLLBACK TRANSACTION语句。上一个计数= 0,当前计数=1。EXECUTE之后的事务计数指示缺少COMMIT或ROLLBACK TRANSACTION语句。先前计数= 0,当前计数=1。将数据库上下文更改为'master'。(Microsoft SQL Server,错误:208) 似乎某些信息未从系统数据库备份中恢复(可能distribution数据库可能丢失了某些内容)。 我也尝试遵循无法禁用发布和分发中给出的答案。但是没有成功。我尝试syspublications同时在master和中创建distribution,但未更改。 那么,如何使复制在该服务器上工作? 试图在服务器上发布一些其他数据库,并且可以正常工作。因此,问题似乎与已发布的数据库有关。如何清除它以管理在其上创建新出版物? System Tables 问题数据库的子文件夹将丢失发布数据库时创建的复制表。 在复制监视器中,我可以看到那些旧的订阅,但在Replication文件夹中不可用 。

3
使未使用的数据库脱机的性能优势
我有一些用于遗留应用程序的数据库,这些数据库在虚拟机中运行,这些虚拟机当前处于关闭状态,直到有人需要查看一些历史记录为止。我已将这些应用程序使用的每个数据库设置为脱机,但我想知道: 将这些未使用的数据库置于脱机状态,而不是使它们处于联机状态,但是在未与它们建立任何连接或对它们运行查询的情况下,是否具有性能优势?

2
可用性组如何与预定作业和SSIS包一起使用?
我在AlwaysOn可用性组中的数据库中设置了2个SQL Server。 我还设置了针对数据库运行的作业。在故障转移期间,如何确保作业将继续在辅助服务器上运行?我是否需要在两台计算机上都安装作业和SSIS软件包,并在辅助计算机上手动禁用它们...然后在发生故障转移时手动启用它们?还是有内置的功能来解决这个问题?

1
设置PostgreSQL记录所有语句对性能的影响
Windows 7 64位上的PostgreSQL 9.2.2。 设置log_statement在postgresql.conf文件中指定的语句记录哪些(无,DDL,修改数据,或全部)。设置在多大程度上log_statement = 'all'降低性能?我已经读到这会显着降低性能,但是这些主张来自于较早的文章,所以相对于我,我应该期望多少性能损失log_statement = 'none'?

3
SQL Server存储过程的条件编译
简短版:是否有某种方法可以使用Visual Studio 2010的SQL Server数据工具有条件地编译SQL Server数据项目中的TSQL代码块? 我正在Visual Studio 2010中使用SQL Server数据工具在实验性SQL Server Express数据库上工作。如果一切正常,最终的目标将是企业SQL Server平台。我在一个盒子上有一个2008实例,在另一个盒子上有一个2012实例,因为我的公司也正在从2008年迁移到2012年,以迁移许多企业数据库。 在我使用的其他编程语言中,预处理器指令使按条件编译部分代码库变得容易。最常见的用途是在受限制的部分中为不同的平台使用不同的代码,或者从发行版本中排除调试输出代码。 在我正在处理的某些存储过程中,这两个都可能非常有用。有这样的东西吗?我知道我可以sqlcmd在部署过程中使用变量交换特定的值,但是我不知道如何使用它来包含或排除随后的代码块。 例: #IF $(DebugVersion) = 'True' -- A bunch of useful PRINTs and what not #ELSE SET NOCOUNT ON #ENDIF #IF $(SSVersion) = '2012' SET @pretty_date = FORMAT(@some_date, 'dddd, MMM dd, yyyy') #ELSE SET @pretty_date = CAST(@some_date …


2
Kerberos身份验证不适用于SQL Server 2012中的链接服务器
我正在使用2个在Windows Server 2012上运行SQL Server 2012的SQL Server来设置DEV / TEST环境。我们从Windows Server 2008上的SQL Server 2005迁移,在此我们已经正确启动了该服务器。 在SQL Server 2012中,Kerberos身份验证不起作用。 每个服务器都有自己的Active Directory帐户,该帐户具有通过Active Directory用户和计算机授予的“写入服务主体名称”和“读取服务主体名称”权限。每当我连接到SQL Server 2005服务器并运行时: SELECT net_transport, auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID; 我知道了: net_transport auth_scheme TCP KERBEROS 当我对新的SQL Server 2012实例执行相同的查询时,我看到: net_transport auth_scheme TCP NTLM 如果我使用SetSPN -Q MSSQLSvc/*Active Directory查询服务主体名称,则会看到列出的2005和2012服务器,与服务器名称完全相同。 例如: MSSQLSvc/SERVERa2005.domain.inet MSSQLSvc/SERVERa2005domain.inet:1433 MSSQLSvc/SERVERb2005.domain.inet MSSQLSvc/SERVERb2005domain.inet:1433 …

3
SQL为列设置允许的值
我想做一个ALTER TABLE表达式,添加一个新列并设置一个默认值,另外定义该列的允许值。它是一个文本列,并且只能是“ value1”,“ value2”和“ value3”。默认值应为“ value1” 根据以下语法图: 我到了这一点 ALTER TABLE exampleTable ADD COLUMN new_column VarChar(20) DEFAULT 'value1' 但我绝对不确定如何设置允许的值。 有可能使像 约束检查new_column IN('value1','value2','value3) ?我必须承认该search condition图使我感到困惑。

2
同时创建许多mysql临时表是否不好?
我需要进行大量的统计分析,才能为用户提供一些数据。目前,我从mysql捕获数据并通过PHP数组处理它们。但是,mysql临时表要好得多(显然比PHP数组更高效和更快;显然是由于它们的机制)。 我的解决方案是在每次导入和处理数据的请求(即连接)上形成一个临时表。但是,我不确定同时创建多个临时表是否有缺点? 这会给mysql服务器造成问题吗?或者我可以在大量同时请求中将其用作PHP数组的替代方法?

4
InnoDB插入速度更快
我是与Mondrian OLAP一起研究OLAP的研究生。所以我想在初始加载时更快地将数据插入InnoDB(MySQL 5.5)。在这种环境下,唯一的用户就是我,因此我认为可以允许对插入速度进行更多宽松的设置。目前,我正在使用以下技术。 禁用 log_bin 使能 skip-innodb-doublewrite 设置transaction_isolation为READ-COMMITTED或READ-UNCOMMITTED(实际上READ-COMMITED) 设置innodb_flush_log_at_trx_commit为0或2(实际上0) 设置innodb_buffer_pool_size为5GB(系统具有6GB RAM) 还有其他技术可以在InnoDB上更快地插入吗?而我不得不修改innodb_io_read_thread和innodb_io_write_thread?如果您需要更多信息,请告诉我。

3
确定用户为什么可以删除数据库
我有一个SQL Server用户,可以删除任何数据库。我一直在运行下面的代码,以检查用户在SQL Server中拥有的权限,但无法确定用户如何删除数据库。是否有一个SQL脚本可以帮助我确定该用户如何删除dbs?是否有命令拒绝他们删除任何数据库?(SSMS未将用户显示为dbcreator角色的一部分) select USER_NAME(p.grantee_principal_id) AS principal_name, dp.type_desc AS principal_type_desc, p.class_desc, OBJECT_NAME(p.major_id) AS object_name, p.permission_name, p.state_desc AS permission_state_desc from sys.database_permissions p inner JOIN sys.database_principals dp on p.grantee_principal_id = dp.principal_id order by principal_name 如果有帮助,上面查询的输出将为用户提供以下三个记录 class_desc object_name权限名权限_state_desc OBJECT_OR_COLUMN xp_cmdshell EXECUTE GRANT DATABASE NULL CONNECT GRANT DATABASE NULL CREATE DATABASE GRANT

1
ON SCHEMA和ON DATABASE触发器有什么区别?
我们可以在具体架构事件(ON SCOTT.SCHEMA)或所有架构(ON SCHEMA)上创建数据库触发器。但是,在创建数据库触发器时,我们也可以使用ON DATABASE。它们之间有什么区别?这是一些旧的东西吗?使用AFTER STARTUP或AFTER STARTUP时应使用ON DATABASE,因为它肯定只与数据库有关,但是使用ON SCHEMA可能会完成与使用ON SCHEMA相同的工作,所以有什么区别?我在Oracle文档中找不到与此相关的参考。
8 oracle  trigger 

3
如何在SSMS中修改用户界面语言?
如何在SQL Server Management Studio中修改用户界面语言? 例如,如果我以英语安装,但希望以日语查看(仅举一个可能的例子)。 我正在非英语作为第一语言的环境中运行此环境,并且希望我的所有窗口都以自然语言阅读。(我特定的自然语言不是很重要吗?)

1
保存视图时,如何防止SSMS重写代码?
我正在创建一个视图,该视图使用带有与WHERE此类似的子句的语句: WHERE ( col1 IS NOT NULL OR col2 IS NOT NULL ) AND NOT EXISTS (SELECT ...) 平均需要10秒钟才能运行。但是,当我尝试将此查询另存为View时,SQL Server(或MS SQL Server Management Studio客户端)“优化”查询以使用此结构,而是: WHERE (col1 IS NOT NULL AND NOT EXISTS (SELECT ...)) OR (col2 IS NOT NULL AND NOT EXISTS (SELECT ...)) 将查询速度减慢到6分钟以上。有什么方法可以禁用此行为,以便视图完全使用我提供的SQL查询吗?

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.