数据库管理员

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

3
MySQL状态变量Handler_read_rnd_next增长很多
在MYSQL状态下,Handler_read_rnd_next值非常高。 我知道,当执行没有适当索引的查询时,此值将增加。 但是,即使执行“ Handler_read_rnd_next”之类的显示状态,该值也会增加2。 基于此状态标志,我们正在监视一些统计信息。 因此,每次这些统计数据都显示为关键。 我们可以从“ Handler_read_rnd_next”计数中排除这些“显示”执行计数吗? 另一个例子 有一个包含10行的表,该表在“数据”列上建立索引,并且如果我们执行以下查询: select data from test where data = 'vwx' -> returns one row 如果我们检查'Handler_read_rnd_next'的值,它会增加7。 以下是上述查询的explain命令的结果: explain select data from test where data = 'vwx'; id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra 1, 'SIMPLE', 'test', 'ref', 'data', 'data', '35', …

2
从MyISAM转换为InnoDB有任何麻烦吗?
我已经准备好从MyISAM迁移到InnoDB,但想知道是否有要查找的完整列表?例如,我没有看到任何列表提到DISABLE KEYS在InnoDB表上运行会抛出警告,除了的手册页ALTER TABLE。在转换之前,我需要了解这种事情。我以为我可以查询很好,但显然不行。
11 mysql  innodb  myisam 

5
如何恢复SQL Server 2008 R2性能计数器?
我正在Windows 7 x64上运行SQL Server 2008 R2 Developer,作为默认实例。由于某种原因,SQL Server的性能计数器似乎已消失。SELECT * FROM sys.dm_os_performance_counters返回零行。 我试过跑步lodctr /T:perf-MSSQLSERVERsqlctr.ini。尽管它顺利完成,但是即使重新启动Remote Registry服务之后,它也无法解决任何问题。实际上,perfmon现在缺少这些计数器。unlodctr MSSQLSERVER仍然说没有安装计数器,但是lodctr /Q:MSSQLSERVER说它们已经存在并启用了。常规Windows和.NET计数器工作正常。 在Windows错误日志中,我看到错误8317: 无法查询与注册表项“ HKLM \ SYSTEM \ CurrentControlSet \ Services \ MSSQLSERVER \ Performance”关联的值“ First Counter”。SQL Server性能计数器被禁用。 我怀疑问题可能是由安装失败的SQL 2012 RC0触发的。除了重新安装SQL Server 2008 R2以外,如何恢复的任何建议?

5
SQL Server存储过程是否缓存数据结果?
我从朋友那里听说过,但是我从未调查过这是否正确。 是否将已执行查询的数据结果存储在缓存中? 我的意思是,如果我有一个存储过程,如: SELECT * FROM USERLIST ...是将结果(在这种情况下为用户列表)存储在高速缓存中是真的吗? 另外,如果我有这些: SELECT * FROM USERLIST WHERE user="user" SELECT * FROM USERLIST WHERE user="userzzz" (其中将user / userzzz作为参数传递),是否在数据库缓存中存储了2个不同的结果是否正确。 我不这么认为,但我希望得到您的确认,专家!

1
限制可用于任何查询的并行度(DOP)
在Oracle Exadata(11gR2)上,我们有一个相对强大的数据库。 cpu_count是24 parallel_server_instances是2 parallel_threads_per_cpu为2 我们注意到,通过在Oracle企业管理器(OEM)中进行的观察,由于查询是按顺序执行的,因此性能很差。为了解决这个问题,所有表,实例化视图和索引都进行了更改,以利用并行性。例如: ALTER TABLE SOME_TABLE PARALLEL (DEGREE DEFAULT INSTANCES DEFAULT); 更改了系统以打开并行化: ALTER SYSTEM SET PARALLEL_DEGREE_POLICY = 'AUTO'; 这样可以提高性能,但是我们有时在OEM中观察到,单个查询将占用DOP 96(所有可用资源)。这导致随后的查询降级为DOP 1(无并行化)。导致性能下降,直到搜索查询完成。 为了解决这个问题,我们尝试通过以下方式限制可用于任何查询的DOP: ALTER SYSTEM SET PARALLEL_DEGREE_LIMIT = 24; 这没有效果。我们经常观察到将使用超出限制的查询(通常为48或96,但没有实际模式)。 我们如何防止任何单个查询占用所有可用资源?

2
如何创建在镜像状态更改时运行作业/过程的事件通知
我按此顺序问这个问题。是否可以使用T-SQL通过TCP发送字符串? 雷木斯·鲁萨努(Remus Rusanu)暴露了似乎是解决我问题的最佳解决方案,但是...我还不成熟,无法理解和理解他所说的一切。 到目前为止,我认为我需要为DATABASE_MIRRORING_STATE_CHANGE创建通知事件,对吗? 我如何创建此事件通知,使其触发时在表中插入一行,该行存储时间戳和来自通知的ID。 到目前为止,我为每个ID设置了一个警报,每个警报都运行这样的工作(此示例的ID为1): DECLARE @state AS varchar(50); SELECT @state = mirroring_state_desc FROM SYS.database_mirroring WHERE mirroring_guid IS NOT NULL; IF (@state IS null) SET @state = ' '; INSERT INTO MirroringAlerts (DateTime, alertID, alertDesc, Sync, alertCreator) values (SYSDATETIME(), 1, 'Principal synchronized with W ', @state, @@SERVERNAME) 基本上,我在此数据库中创建一个内部日志: CREATE …

3
在内存中缓存MySQL数据库
我在使用600MB MySQL数据库的网站时遇到问题。该网站太慢了。我注意到MySQL数据库越大,运行速度越慢。当它为5MB时,该网站非常快。当它开始变大时,它开始变得越来越慢,现在达到600MB,确实很慢,加载页面大约需要10秒。 我检查了最重要的进程,它与高负载或任何东西都没有关系。正如我在HDD 7.2k rpm驱动器上进行测试时,它甚至与IOPS都不相关,而在使用Intel 320 SSD驱动器进行测试时,它也出现了相同的问题,因此我也不认为这与高查询量有关。 该网站正在使用Wordpress,并且有9个活动的插件。人们说这可能是插件...也许吧...但是现在我只想将整个数据库缓存在内存中,并希望获得有关从何处开始以及如何执行的帮助和指导。 我有16GB RAM和i5-2400 4核@ 3.1 GHz。操作系统是centos 5.7 top - 07:23:57 up 9 days, 12:15, 0 users, load average: 0.09, 0.04, 0.05 Tasks: 162 total, 1 running, 161 sleeping, 0 stopped, 0 zombie Cpu(s): 8.2%us, 1.0%sy, 0.0%ni, 90.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 16367532k …

3
在SSMS中保存连接?
是否可以在SSMS(2008 r2)中保存某种会话或配置文件,以便在打开SSMS时打开与已保存的数据库服务器列表的连接? 因此,例如,我经常打开SSMS,然后连接到SQL Server NY-DB01,NY-DB02等。我是否可以使用某种快捷方式来一次性打开所有这些?

4
帮我为SQL Server 2008实例选择RAID级别组合
我将从头开始重建一台IBM 3400服务器。该服务器专用于在Windows 2008 R2上运行的SQL Server 2008实例。 我将进行新的RAID配置。我的机器内部有6个SCSI 73 GB驱动器和一个IBM ServerRAID 8K控制器。设置RAID级别的好方法是什么?我的控制器上应该有两个,三个还是一个字段? 我正在考虑提出以下解决方案之一: 使用所有磁盘并创建RAID 10池。 将4个磁盘用于RAID 1e池,并将其用于存储数据库数据和OS,将其他2个磁盘用于RAID 0池,并将其用于存储数据库日志。 其他组合。 较大的条带单元尺寸更好吗? 该服务器将成为复制数据库的订阅者。它的主要任务是报告和数据检索,仅复制代理进行写操作。数据库的大小约为90 GB。

1
从物理数据库迁移到云数据库
将在Microsoft SQL Server 2008R2中创建的物理数据库移动到SQL Azure上,这具有什么意义?该物理数据库利用了诸如varchar(MAX)FILESTREAM BLOBS上的全文本搜索之类的高级功能? 需要哪些体系结构更改?此过渡涉及哪些步骤?SQL Azure Migration Wizzard不能简单地成为自动进行过渡的魔术工具。迁移工具无法解决哪些兼容性问题,应“手动”解决?

3
包含列与过滤索引
我们目前正在使用名为tb_tranfers的表。该表有4000万行,大小约为26 GB(数据11 GB,索引15 GB)。 10%到15%的行是软删除的行(DeletedDate不为null)。该应用程序仅使用DeletedDate为null的行。对该表的所有查询都将包含一个用于此目的的子句。 该表上有15个索引。缺少索引DMV包含使用DeletedDate作为包含列创建索引的建议。 WHERE DeleteDdate IS NULL在所有11个非簇状索引上使用筛选索引是否有帮助?还是将DeletedDate列作为包含的列会更好?

1
SSMS 2008 R2中的全文本索引在哪里
我使用SQL Server Management Studio创建了一个新的数据库,一些表以及全文索引和目录,没有任何问题。我想为每个复制T-SQL创建脚本,以将它们包括在我的文档中。我可以获取数据库,表,外键和目录的创建脚本,但是似乎找不到全文索引。我已经检查了相关表的Script Table As- > CREATE To,它不在那儿,目录也没有。有任何想法吗?是因为我只运行SQL Server标准版吗?

5
不完整的mysqldump
我正在尝试运行mysqldump来创建数据库快照,并且发现它会在途中随机停止,而不会报告任何错误。我的数据库相对较小(大约100MB),并且正在使用InnoDB。 我像这样运行它: mysqldump --force --single-transaction --quick --user myuser --password=mypass -h mydatabasehost mydb > /tmp/snapshot.sql 检查退出代码报告0。 我的版本是:用于redhat-linux-gnu(i386)的mysqldump Ver 10.13 Distrib 5.1.52 我见过一些类似的帖子,甚至见过正式的错误报告,但似乎都没有解决方案。 如何获取mysqldump来拍摄完整的数据库快照? 编辑:我的数据库当前位于Amazon的RDS上。

2
为了最大程度地提高数据库性能,应在通过SSIS将大量数据加载到SQL Server 2008之后运行哪些命令
我写了一个SSIS包,将测试数据加载到一个空数据库中。一些表非常大(约7亿行)。SSIS软件包完成后,是否应该运行任何命令(作为学徒DBA!)以最大化数据库的性能? 例如,我执行了EXEC sp_updatestats但是它报告没有索引需要更新。 一旦加载了大量数据,是否有一系列事情要做?或者SQL Server 2008会为您完成所有这些工作吗?

2
为什么“插入查询”之前的“开始交易”会锁定整个表?
我正在使用SQL Server 2005 Express。 在一种情况下,我在存储过程中Begin Transaction的INSERT语句之前添加了命令。当我执行此存储过程时,它锁定了整个表,并且所有并发连接都显示为挂起状态,直到INSERT完成为止。 为什么整个表都被锁定?如何在SQL Server 2005 Express中克服此问题? 已编辑 查询如下: INSERT INTO <table2> SELECT * FROM <table1> WHERE table1.workCompleted = 'NO'

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.