数据库管理员

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

1
FlushCache消息在特定时间出现在日志中
最近,我们一直在遇到许多数据库性能问题,并且我一直在尝试看看是否能找出原因。我们没有DBA(我是软件开发人员),所以我有点像在指点翅膀,而且我在网上找到的许多内容对我来说就像是一门外语。 我们每天早上都重新启动SQL Server,因为这是它在工作日内运行的唯一方式。我注意到每天凌晨5点左右,我们开始每两分钟在日志中收到此消息: FlushCache:针对DB 9:0用97168 ms的7432次写入清理了11848个buf(避免了8139个新的脏buf) 最后未完成的目标:4,avgWriteLatency 32 平均吞吐量:0.72 MB /秒,I / O饱和度:11635,上下文切换18849 这些数字当然每次都会有所不同,但是在我重新启动服务器之前,该消息一遍又一遍地重复着相同的消息。我不确定如何解释这一点,我一直在尝试向Google寻求它,而我所收集的只是这意味着I / O可能有问题,并且花费的时间比预期的要长。我们最近改用了SSD,因此我认为这应该不是写问题。 有人能对此有所启示吗?

3
mysql dump import在我的开发人员的机器上非常慢
我有一个SQL转储,它很大(411 MB),并且在服务器A上花费了10分钟的导入时间,在我的工作站B上的同一次导入,估计(pipeviewer)需要8个小时的时间来导入(它在40分钟内导入了31 MB) ),这是慢53倍。 规格: Server A: MySQL Version: 5.5.30-1.1 (Debian) 2 GB RAM 1 core QEMU Virtual CPU version 1.0 - cpu MHz: 3400.020 Workstation B: MySQL Version: 5.5.41-MariaDB-1ubuntu0.14.04.1 14 GB RAM 4 cores Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz - cpu MHz: 1600.000 mysql / maria配置是标准配置。 我昨天切换到工作站上的MariaDB-但是在MariaDB之前,统计数据甚至更糟。 我已经删除了工作站上的所有数据库-没什么不同。 …

1
Postgresql的字符大小限制
postgresql中各种数据类型的大小限制是多少?我在某处看到character varying(n),varchar(n) n必须在1到10485760之间。是这样吗? 什么是有效的尺寸character(n),char(n)和text?

1
在SQL Server中,为什么向后扫描聚集索引不能不使用并行性?
我一直在阅读有关SQL Server内部的信息,每本书或博客都提到了有关向后扫描的内容。 向后扫描聚集索引不能使用并行性 唯一说些什么的是下面的这篇文章。该帖子说,SQL Server团队没有实现向后扫描所需的优化。https://www.itprotoday.com/sql-server/descending-indexes 由于叶级页面是使用双向链接列表链接的,因此我不明白为什么向后扫描与向前扫描不同。任何澄清都非常感激。

5
仍然是避免将默认端口用于SQL Server的最佳实践吗?
从历史上看,作为安全最佳实践的一部分,建议不要使用默认端口连接到SQL Server。在具有单个默认实例的服务器上,默认情况下将使用以下端口: SQL Server服务-端口1433(TCP) SQL Server浏览器服务-端口1434(UDP) 专用管理员连接-端口1434(TCP) 问题: 这个建议仍然有用吗? 是否应该更改上述所有端口?

1
活动连接数和剩余连接数
我想获取有关一段时间内连接峰值数量的统计信息。 我知道这种pg_stat_activity观点,select count(*) from pg_stat_activity但我认为这种方法不是很聪明。 还有其他视图或表格可以提供我需要的信息吗?

1
普通的SELECT查询计划中的“恒定扫描”和“左外部联接”来自何处?
我有这张桌子: CREATE TABLE [dbo].[Accounts] ( [AccountId] UNIQUEIDENTIFIER UNIQUE NOT NULL DEFAULT NEWID(), -- WHATEVER other columns ); GO CREATE UNIQUE CLUSTERED INDEX [AccountsIndex] ON [dbo].[Accounts]([AccountId] ASC); GO 该查询: DECLARE @result UNIQUEIDENTIFIER SELECT @result = AccountId FROM Accounts WHERE AccountId='guid-here' 使用包含单个“索引搜索”的查询计划执行-符合预期: SELECT <---- Clustered Index Seek 该查询的作用相同: DECLARE @result UNIQUEIDENTIFIER SET …

4
为什么批量插入被认为是危险的?
此问题是从Information Security Stack Exchange 迁移的,因为可以在Database Administrators Stack Exchange上回答。 迁移 2年前。 我想了解为什么一般的网络安全团队(我处理过的一个以上的组织BULK INSERT)对于向应用程序和数据库程序员授予(例如TSQL)权限是一成不变的?我无法相信“填补磁盘滥用”的借口,除非我遗漏了一些东西,因为最终结果与执行类似操作的应用程序没有什么不同: for (long i = 0; i < LONG_MAX; ++i) executeSQL("INSERT INTO table VALUES(...)"); 并且INSERT是具有基本写权限的任何人都可以执行的常见DML命令。 为了使应用程序受益,BULK INSERT它效率更高,速度更快,并且使程序员无需解析SQL之外的文件。 编辑:我最初在信息安全站点上问这个问题是有原因的-不是DBA反对使用BULK INSERT,而是“信息保证”(IA简称-网络安全人员)正在迫使该问题。我让这个问题再讲一两天,但是如果批量操作确实确实绕过了约束或触发器,我可以看到这是一个问题。

6
如何证明数据库中缺少隐式顺序?
最近,我向同事们解释了在必要时使用一列对数据库表中的数据进行排序的重要性,例如,按时间顺序排列的数据。事实证明这有些困难,因为他们似乎可以无休止地重新运行查询,并且总是以相同的顺序返回相同的行集。 我之前已经注意到这一点,而我真正能做的就是坚持要他们信任我,而不仅仅是假设数据库表的行为就像传统的CSV或Excel文件一样。 例如,执行(PostgreSQL)查询 create table mytable ( id INTEGER PRIMARY KEY, data TEXT ); INSERT INTO mytable VALUES (0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g'), (7, 'h'), (8, 'i'), (9, 'j'); 将创建具有明确概念顺序的表格。以最简单的方式选择相同的数据将是: SELECT * FROM mytable; 总是给我以下结果: id | data ----+------ 0 | …

7
MariaDB无法初始化tc日志
我已经尝试了Internet上的所有解决方案,但我的MariaDb服务器继续失败,继续背叛我,继续破坏我很小的DevOps世界。我为缓解这种状况所做的尝试包括各种各样的满足:更改权限,配置,删除日志文件,升级/重新安装,上下移动她的内部文件,删除其他DBMS,删除除她以外的所有内容。这么长时间抵制。我的最后一个也是唯一的希望,就是为我们关系中的关键时刻指明道路。 我正在使用无业游民,而问题出在datadir选项上-使用默认路径时,一切正常,但是当我将其更改为无业游民的共享文件夹时,Maria甚至无法启动。我已将所有/ var / lib / mysql文件复制到新文件夹。 我有Windows主机,Centos来宾,我的配置是: MariaDb版本: mysql Ver 15.1 Distrib 10.1.17-MariaDB, for Linux (x86_64) using readline 5.1 Vagrantfile: # -*- mode: ruby; -*- ENV['VAGRANT_DEFAULT_PROVIDER'] = 'virtualbox' Vagrant.configure("2") do |config| config.vm.box_url = "https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box" config.vm.box = "centos7" config.vm.network "private_network", ip: "10.0.1.10" config.vm.synced_folder "mysql", "/vagrant/mysql", owner: "mysql", group: "mysql" config.vm.provider …
21 mariadb  centos 

6
SQL Server注入-以26个字符为单位的损失是多少?
我正在测试针对SQL Server数据库上的注入攻击的弹性。 db中的所有表名都是小写,并且排序规则区分大小写,Latin1_General_CS_AS。 我可以发送的字符串被强制为大写,并且最大长度为26个字符。所以我不能发送DROP TABLE,因为表名将是大写的,因此由于排序规则,该语句将失败。 那么-我在26个角色中能造成的最大伤害是多少? 编辑 我了解有关参数化查询的所有知识,等等-假设在这种情况下,开发构建要发送查询的前端的人没有使用params。 我也不打算做任何邪恶的事情,这是由同一组织中的其他人构建的系统。

1
设置统计IO-工作表/工作文件
我正在执行查询,产生计划: 统计IO: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, …

1
增量更新后统计信息消失
我们有一个使用增量统计信息的大型分区SQL Server数据库。所有索引均按分区对齐。当我们尝试通过分区在线重建分区时,在重建索引之后,所有统计信息都会消失。 下面是一个脚本,用于通过AdventureWorks2014数据库在SQL Server 2014中复制问题。 --Example against AdventureWorks2014 Database CREATE PARTITION FUNCTION TransactionRangePF1 (DATETIME) AS RANGE RIGHT FOR VALUES ( '20130501', '20130601', '20130701', '20130801', '20130901', '20131001', '20131101', '20131201', '20140101', '20140201', '20140301' ); GO CREATE PARTITION SCHEME TransactionsPS1 AS PARTITION TransactionRangePF1 TO ( [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], …

3
CPU利用率是否会影响外部NUMA访问的成本?
情境 假设我有一个带有4个套接字的SQL Server,每个套接字有1个NUMA节点。每个插槽具有4个物理核心。总内存为512 GB,因此每个NUMA节点均具有128 GB的RAM。 密钥表被加载到第一个NUMA节点中。 题 假设我们从该表读取了大量流量。如果拥有NUMA节点的套接字的所有物理核心都具有100%的CPU利用率,这是否会对来自其他套接字的非本地NUMA访问的成本产生负面影响?或者,另一方面,无论本地套接字有多忙,非本地NUMA访问的成本都是多少? 我希望我的问题有道理。请让我知道是否可以尝试澄清。 背景 上周我们的生产服务器中发生数据库问题,某些业务处理似乎受到了更大的影响。我们进行的查询几乎没有逻辑读取,但需要超过1分钟的时间。我们查看的总体CPU利用率约为60%。我们没有查看特定于套接字的CPU指标。I / O指标是平均值。

1
SQL Server 2014可以在批处理模式下执行什么操作?
在查询中使用列存储索引时,SQL Server可以使用批处理模式。关于可以在批处理模式下运行什么以及不能在批处理模式下运行的文档很少。请查看以下(激励性)查询计划,其中以批处理模式(绿色)执行大量操作: (这是一个估计的计划。我使用实际计划来验证实际执行模式确实是批处理的。) 请注意,只有T1的构建方使用列存储索引。所有探针输入(T2和T3)都是行存储。他们的数据似乎转换为批处理模式。我一直认为批处理模式仅用于通过探针侧运行的数据流。 似乎数据可以转换为批处理模式,即使它不是源自于列存储索引。这就提出了一个问题:为什么SQL Server也不将批处理模式也用于仅行存储的查询?对于其中一些人可能是有益的。使用列存储索引是否是使SQL Server考虑批处理模式所必需的正式要求?我们是否可以添加一个带有列存储索引的零行伪表来引入批处理模式并实现性能提升? 自SQL Server 2014起,批处理模式下到底可以运行什么?

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.