数据库管理员

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

6
使用一个更新语句在列中切换值
您发现系统中的错误已在数据库中错误地将男性(M)命名为女性(W),反之亦然。列仅允许一个字符。在不使用任何临时表的情况下,编写一个更新查询来解决此问题。 这个问题是在我最近进行的一次采访中提出的,我打算进行更多可能有类似问题的采访,所以我想对如何处理这个问题有所了解。
12 update 

2
在提交之前,InnoDB在哪里存储交易数据?
我做了使用一些测试READ_COMMITTED,并READ_UNCOMMITTED在家里,使用JDBC技术。 我看到它READ_UNCOMMITTED实际上可以读取未提交的数据,例如,来自尚未提交的某些事务的数据(可以执行UPDATE查询)。 问题 未提交的数据存储在哪里,以便一个READ_UNCOMMITTED事务可以从另一个事务中读取未提交的数据? 为什么READ_COMMITTED事务不可能读取未提交的数据,即执行“脏读”?哪种机制强制执行此限制?


4
处理源LOB列时避免使用“逐行”获取方法
我有一个旧的PostgreSQL数据库源(ODBC),我正尝试使用SSIS迁移到新的SQL Server模式。我收到警告说: 强制执行“逐行”读取方法,因为该表具有LOB列。列的内容是LOB 问题是,该列中的任何一个都不必真正是LOB。有一些是TEXT类型,但可以很容易地放入varchar(max)中。但是,甚至更陌生的人,大多数已经是 varchars,但是似乎将varchar(128)上的所有内容都视为是LOB(在预先的属性中,数据类型为DT_NTEXT)。 我事件尝试执行一条手动SQL命令,其中我在select语句中将每种字符串类型显式转换为适当长度的varchar,并且在ODBC源中仍将它们设置为DT_NTEXT。 我不是DBA,所以我做的事情很愚蠢是完全有可能的。我只想知道确保类型最终成为varchars的最佳方法,这样我就可以批量提取。有任何想法吗? 如果有问题,我将在Visual Studio 2013中使用SSIS-BI 2014。


3
对每个音乐艺术家都是乐队或独奏演员的场景进行建模
我必须为涉及音乐艺术家描绘的业务环境设计一个实体关系图(ERD),下面将详细介绍。 方案说明 一个艺术家有一个名称,且必须要么一组 或一个独奏演员(但不能同时)。 甲组是由一个或多个独奏表演者,并具有会员数(其应该从数计算独奏表演构成组)。 一个独奏演员可能是一个会员众多的群体或无的集团,并可以播放一个或多个仪器。 题 如何构建一个ERD来代表这种情况?我对它的“或”部分感到困惑。


2
大表中索引扫描缓慢
使用PostgreSQL 9.2时,我在相对较大的表(200+百万行)上的慢查询遇到了麻烦。我没有尝试任何疯狂的事情,只是增加了历史价值。以下是查询和查询计划输出。 我的表格布局: Table "public.energy_energyentry" Column | Type | Modifiers -----------+--------------------------+----------------------------------------------------------------- id | integer | not null default nextval('energy_energyentry_id_seq'::regclass) prop_id | integer | not null timestamp | timestamp with time zone | not null value | double precision | not null Indexes: "energy_energyentry_pkey" PRIMARY KEY, btree (id) "energy_energyentry_prop_id" btree (prop_id) …

2
Redis占用了所有内存和崩溃
Redis服务器v2.8.4在具有8 GB RAM和16 GB交换空间(在SSD上)的Ubuntu 14.04 VPS上运行。但是,htop表明redis独自占用了22.4 G内存! redis-server最终由于内存不足而崩溃。Mem并且Swp两个命中率均达到100%,然后redis-server与其他服务一起被杀死。 来自dmesg: [165578.047682] Out of memory: Kill process 10155 (redis-server) score 834 or sacrifice child [165578.047896] Killed process 10155 (redis-server) total-vm:31038376kB, anon-rss:5636092kB, file-rss:0kB redis-server从其他方面重新启动可能service redis-server force-reload会导致OOM崩溃或导致内存使用量降至<100MB。 问题:为什么在redis-server崩溃之前会占用越来越多的内存?我们如何防止这种情况? 是真的,maxmemory因为redis达到maxmemory极限后,设置将无法删除,因此设置将无法工作吗? 重启redis-server后 Redis版本: Redis server v=2.8.4 sha=00000000:0 malloc=jemalloc-3.4.1 bits=64 build=a44a05d76f06a5d9 更新资料 当htop报告的内存使用量redis-server是4.4G RAM和22.6G交换,所有的钥匙,redis的占用的空间量仅为60.59636307 MB,所报告的rdbtools。这也是redis-server重启后立即占用的RAM量。 INFO ALL什么时候redis-server占用大量内存 …

2
在一个查询中更新具有不同值的多行
我试图了解如何用不同的值更新多行,但我不明白。解决方案无处不在,但对我来说似乎很难理解。 例如,将两个更新更新为1个查询: UPDATE mytable SET fruit='orange', drink='water', food='pizza' WHERE id=1; UPDATE mytable SET fruit='strawberry', drink='wine', food='fish' WHERE id=2; 我不了解CASE WHEN .. THEN ... END的工作原理以及如何使用它。 想知道是否有人可以帮助我。
12 mysql  update 

2
为什么索引视图不允许非唯一聚集索引?
我一直在研究使用索引视图来提高一些我们最常用的视图的性能。 但是,索引视图不支持非唯一的聚集索引,这与其余数据库结构设置的优先级略有不同。 例如,这是几个表的简化版本。 -Groups- Group ID GroupName -Users- UserKey UserName FullName GroupID 索引位于Groups.GroupID(非群集)和Users.GroupID(群集)上。聚簇键位于“用户”表中的GroupID上,因为通常会检索到来自特定组的一系列用户。显然,每个组将有多个用户,因此该聚集索引是唯一的。 这使我不确定如何在索引我的视图(例如本示例)时遵循此优先顺序,因为我无法拥有非唯一的聚集索引。 ConsumableID ConsumableVariantID AllowThresholdOverwrite FullPath GroupID ManufacturerID Type ModelID 101 29 1 0.1.2.4. 4 3 3 2 实际上,此View上唯一唯一的值是ConsumableID列,因此在将索引放置到什么地方时,我别无选择。 为什么在常规表允许时View不允许非唯一聚集索引?

2
将character_set_client的值设置为utf8mb4
我正在尝试将我的数据库转换为utf8mb4遵循本指南。我已经设定: [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4 [mysqld] init-connect='SET NAMES utf8mb4' collation_server=utf8mb4_unicode_ci character_set_server=utf8mb4 skip-character-set-client-handshake 但价值character_set_client并character_set_results仍然不会改变utf8mb4。 mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; +--------------------------+--------------------+ | Variable_name | Value | +--------------------------+--------------------+ | character_set_client | utf8 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary …
12 mysql  collation  utf-8 

1
在PostgreSQL中存储和查询滚动数据
我将大量的天气模型数据放入PostgreSQL数据库中。该计算机具有8个内核和16 GB的RAM。我正在使用PostGIS 2.1运行PostgreSQL 9.3。每个表都有不同的天气数据(温度,露点,风等)。每个表将有6-7列:纬度,经度,点几何,高程,与模型相关的日期时间,以及1-2个感兴趣的数据值。将首先根据时间和海拔高度查询边界框的数据。每个表大约有145,757,360行(比现在不再重要的数据将被删除)。我粗略估计,每个表的大小(不含索引)约为10 GB。(这是52字节的数据加上每行23字节的开销)。当新模型数据可用时,数据将定期更新/插入。注意: 因此,我正在研究以下两个计划: 只需按(日期时间,海拔高度)进行索引和聚类,并为点几何图形添加附加索引。运行常规的cron作业,该作业将删除旧行,运行真空/分析并重新进行集群。 按日期时间进行分区,然后对每个表按高度进行聚类,并按索引对几何进行索引。运行常规的cron作业以添加新表,然后删除旧表。 进一步, 因此,我知道删除表的效率更高,而删除和清理则更为有效。但是我会否看到性能提升? 当所有表将被均匀更新和选择直到不相关而被删除之前,分区是否合适(文档指出,当只选择其中的几个分区时,分区效果最佳)? 交付数据时,选择的速度会比聚集索引快吗?如果一次发出多个请求,答案是否会改变? 谢谢。我希望我收集所有需要的数据。如果没有,请告诉我,我将其添加。

3
“数据库正在转换”错误
今天,我正在尝试通过现有数据库还原数据库,我只是在SSMS中右键单击该数据库->任务->脱机,以便可以还原该数据库。 一个小弹出窗口出现并显示Query Executing.....了一段时间,然后抛出了一个错误说Database is in use cannot take it offline。我从中收集到该数据库的一些活动连接,因此我尝试执行以下查询 USE master GO ALTER DATABASE My_DatabaseName SET OFFLINE WITH ROLLBACK IMMEDIATE GO SSMS此时再次显示Query Executing.....一段时间,然后引发以下错误: Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed on database 'My_DatabaseName'. Try again later. Msg 5069, …

1
在Powershell中从SSMS检索打印的消息
我们的DBA团队不会使用以下方法来验证备份TSQL(可以轻松地在备份后完成备份,几乎不需要时间,因此我不知道为什么不这样做): RESTORE VERIFYONLY FROM DISK = 'D:\Backups\LOCATION' 他们过去曾遇到过问题,因此即使我们认为他们会从中学到东西,也没有。我创建了一个Powershell脚本来执行此操作,因为我们有大约100多个服务器,我只想针对所有备份运行此脚本,以确保它们有效。下面的脚本可以正确运行(因为它不会中断或抛出错误),我很好奇是否有一种方法可以将返回的消息返回到Powershell中,而我们通常会在SSMS中得到该消息,其中指出文件1上的备份集为作为验证有效。 $SqlCon = New-Object System.Data.SqlClient.SqlConnection $SqlCon.ConnectionString = "SERVER=SERV\INST;Integrated Security=true;DATABASE=master" $baks = Get-ChildItem "D:\Backups\" -Filter *.BAK foreach ($bak in $baks) { $SqlCon.Open() $cd = New-Object System.Data.SqlClient.SqlCommand $cd.Connection = $SqlCon $cd.CommandText = "RESTORE VERIFYONLY FROM DISK = @f" $cd.Parameters.Add("@f", $bak.FullName) $cd.ExecuteNonQuery() $SqlCon.Close() }

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.