数据库管理员

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

4
如何将MySQL先前的从属服务器更改为主服务器并删除从属状态信息?
我有一个主服务器->从服务器配置,其中主服务器出现故障。我已经能够将旧的从属设备重置为主机,而将旧的从属设备重置为从属设备。精细。 我似乎无法做的是删除旧的从属设备(现在是新的主设备)上的主设备信息。我知道了: mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Master_Host: 10.1.2.101 Master_User: replicationSlave Master_Port: 3306 ... Slave_IO_Running: No Slave_SQL_Running: No 我已经阅读了很多MySQL文档,但仍然没有找到从新主服务器清除从机信息的方法。我试过了: RESET SLAVE这似乎无法清除这些设置。[[实际上,它确实删除了master.info文件,但没有删除内存设置。见下文。]] CHANGE MASTER TO MASTER_HOST='' 由于最近已弃用,因此只会产生错误。 检查my.cnf哪些没有主信息,因为它们是通过编程添加的。 RESET MASTER因为一些mysql文档推荐了它。那只会重置bin日志。 在内部MySQL表中四处查看,是否可以找到要清除的字段。 在MySQL〜5.5.9上执行此操作的正确方法是什么?谢谢你的帮助。 编辑: 因此,事实证明,RESET SLAVE该master.info文件将隐式删除@RolandoMySQLDBA。但是,在删除从属信息之前,您仍然需要重新启动服务器。 有什么方法可以删除此从属信息而不必重新启动mysqld吗?

2
防止查询等待表级锁定的方法
将客户的数据库移至其他服务器后,我们遇到了问题。这应该会对站点的性能产生积极影响,但是MyISAM中的表锁定存在问题。(我听说过使用InnoDB代替MyISAM,但是我们不能在不久的将来更改引擎)。 我们可以将其发现为更新查询,该更新查询是由主持人在文章站点上激活评论时执行的。这是过程: 更新查询已处理 SET status = 1 WHERE id = 5(已设置索引) 页面的缓存文件被删除 此时,整个页面变慢。数据库本身忙了几分钟。我几次获取进程列表,并看到了大约60个不同选择查询的条目,它们都处于等待表级锁定的状态。 1.我不理解为什么表上的此更新article_comments会影响表article等待表级锁定的选择语句。在进程列表中,几乎所有等待查询都来自该表。我已经读过一个事实,即更新/插入优先于选择,并且这可能会导致此类问题,但是当注释被激活时,articles-table本身不会被更新,因此选择不应该等待。我错过了吗? 2.除了更改为InnoDB以外,还可以采取其他措施来防止此行为或至少获得更好的平衡吗?对于将数据库移动到新服务器之前没有出现此问题,我感到非常恼火。我猜有一些配置错误,但我不知道如何识别。

1
存储过程返回动态创建的表数据
简而言之,我们正在与具有调查系统的外部供应商合作。该系统不一定设计得最好,因为当您创建新调查并创建新表时,即: Tables ____ Library_1 -- table for Survey 1 SurveyId int InstanceId int Q_1 varchar(50) Library_2 -- table for Survey 2 SurveyId int InstanceId int Q_2 int Q_3 int Q_4 varchar(255) 这些表用所生成的SurveyId在名称的末尾(Library_)和问题列与所产生的QuestionId在它(结束Q_)。 为了明确起见,问题存储在单独的表中,因此尽管问题ID是连续的,但对于每个调查来说,问题ID都不从1开始。问题列将基于表中分配给它们的ID。 看起来查询起来非常简单,除了我们需要从所有调查表中提取数据以发送到另一个系统外,这就是问题所在。由于这些表是在前台添加新调查时自动创建的,最终应用程序,其他系统无法处理这种类型的结构。他们需要数据是一致的以便消费。 因此,我的任务是编写一个存储过程,该过程将从所有Survey表中提取数据并将其放置为以下格式: SurveyId InstanceId QNumber Response ________ __________ _______ ________ 1 1 1 great 1 2 1 …

1
为什么全文搜索返回的行少于LIKE
我没有像我想要的那样进行全文搜索,而且我不了解结果列表中的差异。 语句示例: SELECT `meldungstext` FROM `artikel` WHERE `meldungstext` LIKE '%punkt%' 返回92行。我收到具有匹配项的行,例如,在列meldungstext中显示“ Punkten”,“ Zwei-Punkte-Vorsprung”和“ Treffpunkt”。 我在“ meldungstext”列上设置了全文索引,并尝试了以下操作: SELECT `meldungstext` FROM `artikel` WHERE MATCH (`meldungstext`) AGAINST ('*punkt*') 这仅返回8行。我只会收到与“ Punkt”本身匹配的行,或者与“ i-Punkt”一样被视为“ Punkt”的单词。 然后,我尝试了布尔模式: SELECT `meldungstext` FROM `artikel` WHERE MATCH (`meldungstext`) AGAINST ('*punkt*' IN BOOLEAN MODE) 返回44行。我收到在meldungstext列中包含“ Zwei-Punkte-Vorsprung”或“ Treffpunkt”的行,但没有包含“ Punkten”的行。 为什么会发生这种情况?如何设置“完全”的全文搜索,以防止在子句中使用LIKE'%%'?

2
索引会消耗内存吗?
我刚刚开始了解SQL Server上的内存使用情况。在问题SQL Server 2008 R2“ Ghost Memory”问题的答案中使用查询时?,我发现单个数据库占用了缓冲池中绝大部分的空间。再看一下,使用sys.allocation_units和sys.indexes,我确认这很可能是由于数据库中索引的大量使用引起的。大多数索引都是群集的。 另一位数据库开发人员认为我们在服务器上遇到内存问题-由于没有可用的内存,查询开始运行很长时间。 我的问题是-使用这些索引及其在缓冲池中的存在是否会占用其他进程可用的内存?

1
PostgreSQL数据类型文本与无长度的varchar
在PostgreSQL中,您可以创建数据类型字符变化(无长度精度)的列或类似以下文本的列: ALTER TABLE test ADD COLUMN c1 varchar; ALTER TABLE test ADD COLUMN c2 text; 这两种数据类型之间有区别吗? 该文档尚不清楚。他们说 : 如果使用字符变化而没有长度说明符,则该类型接受任何大小的字符串。 [...] 另外,PostgreSQL提供了文本类型,可以存储任意长度的字符串。 似乎这两个数据类型是等效的,但不是显式的...有关此的更多信息? 谢谢你尼科

5
T SQL表值函数,以逗号分隔列
我在Microsoft SQL Server 2008中编写了一个表值函数,以数据库中的逗号分隔列为每个值吐出单独的行。 例如:“一,二,三,四”将返回一个只有一个包含以下值的列的新表: one two three four 你们这些代码看起来容易出错吗?当我用 SELECT * FROM utvf_Split('one,two,three,four',',') 它永远运行,永不返回任何东西。尤其是因为MSSQL服务器上没有内置的拆分功能(为什么为什么为什么?!),而我在网络上发现的所有类似功能都是绝对的垃圾,或者与我要执行的操作无关。 这是函数: USE *myDBname* GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[utvf_SPlit] (@String VARCHAR(MAX), @delimiter CHAR) RETURNS @SplitValues TABLE ( Asset_ID VARCHAR(MAX) NOT NULL ) AS BEGIN DECLARE @FoundIndex INT DECLARE @ReturnValue …

2
如何判断MySQL中是否使用索引进行排序?
我有一个带有ORDER BY子句的查询,该子句使用一列,该列是WHERE子句中使用的索引的最后一列,本质上是以下形式: SELECT cols FROM tables WHERE col_1 = x AND col_2 = y AND col_3 = z ORDER BY col_4 并按此顺序在列(col_1,col_2,col_3,col_4)上创建索引。 当我分析查询时,超过99%的时间用于“排序结果”状态。如果有区别,col_4是一个时间戳列。我了解到ORDER BY只能在某些情况下使用索引,但是对于优化器何时才能使用它仍然有些困惑。
10 mysql  index  sorting 

3
Oracle:如何查询层次表?
背景 这是为了构造一些我们将用于报告的视图。 我有一张位置表,关键字段是“ location”和“ parent”。 这两个字段在层次上创建的结构与公司名称->校园名称->建筑物名称->楼层名称->房间名称相似。在这种情况下,公司名称保持不变,园区名称保持不变。 位置的结构通常如下所示: +-----------+ | Org. Name | +-----+-----+ | +-----v-----+ +--------------------+|Campus Name|+---+--+-------------+ | +--+--------+ | | | | | | | | | | +--+-----+ +------+-+ +--+----+ +---+---+ +--+| BLDG-01|+--+ | BLDG-02| |BLDG-03| |Grounds| | +--------+ | +--------+ +-------+ +-------+ +-+------+ +-----+--+ |Floor-01| |Basement+-------+ +-+------+ …
10 oracle  query  view  hierarchy 

3
使用try / catch进行动态SQL备份命令时如何记录错误详细信息
在使用try catch和动态sql的存储过程中发出备份命令时,与直接运行备份命令相比,错误消息非常普遍。 在SP中尝试/捕获: begin try execute sp_executesql @sql; -- a backup command end try begin catch print ERROR_MESSAGE(); -- save to log, etc. end catch 结果是 50000:usp_Backup:117:BACKUP DATABASE异常终止。 wheareas发出raw命令: backup DATABASE someDb to disk... 结果更好的细节: 查找错误-SQL Server数据库错误:文件“ H:\ FolderName \ Filename.bak:” 112上发生了不可恢复的I / O错误(磁盘上没有足够的空间。)。 有没有办法将这些详细信息捕获到存储过程中的变量中(进行记录,传递回调用方以进行重试逻辑)?似乎详细信息正在通过消息通道传递,但我希望它们在SP中可用。

2
我可以让一个表成为另一个的“别名”或“符号链接”吗?
我有两个具有相同结构的表A和B。编写了某个应用程序,因此它始终将相同的数据写入两个表。 与一位同事讨论了节省驱动器空间的潜力之后,我想知道mysql或postgresql是否可以在表上创建另一个的“别名”或“符号链接”。 我希望该行为与软文件符号链接的行为非常相似;从symlink本身或其目标读取将产生相同的输出,而对其中一个写入将更新目标。
10 mysql  postgresql 

3
如何在InnoDB引擎中使用插入延迟,并减少插入语句的连接?
我正在开发一个涉及大量数据库写入,大约70%插入和30%读取的应用程序。这个比率还将包括我认为是一次读取和一次写入的更新。通过插入语句,多个客户端通过以下插入语句将数据插入数据库: $mysqli->prepare("INSERT INTO `track` (user, uniq_name, ad_name, ad_delay_time ) values (?, ?, ?, ?)"); 问题是我应该使用insert_delay还是使用mysqli_multi_query机制,因为insert语句使用服务器上的〜100%cpu。我在数据库上使用InnoDB引擎,因此无法进行延迟插入。在服务器上的插入速度为〜36k / hr,读取率为99.89%,我也使用select语句在单个查询中检索了7次数据,该查询在服务器上执行需要150秒。我可以使用哪种技术或机制执行此任务?我的服务器内存为2 GB,我应该扩展内存吗?看看这个问题,任何建议都会感激我。 表的结构: +-----------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | user | …

2
连续处理时索引碎片
SQL Server 2005 我需要能够连续处理900M记录表中的约350M记录。在处理过程中,我用来选择要处理的记录的查询变得非常分散,我需要停止处理以重建索引。伪数据模型和查询... /**************************************/ CREATE TABLE [Table] ( [PrimaryKeyId] [INT] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, [ForeignKeyId] [INT] NOT NULL, /* more columns ... */ [DataType] [CHAR](1) NOT NULL, [DataStatus] [DATETIME] NULL, [ProcessDate] [DATETIME] NOT NULL, [ProcessThreadId] VARCHAR (100) NULL ); CREATE NONCLUSTERED INDEX [Idx] ON [Table] ( [DataType], …

3
如何提高MS SQL Server中原始查询的性能?
我有一个ASP.NET网站,它拥有自己的独立数据缓存,并且数据不会长时间更改,因此它不需要使用相同的查询第二次查询SQL Server。我需要提高转到该SQL Server的首次(原始)查询的性能。一些查询处理的数据太多,可能导致SQL Server使用tempdb。我不使用临时表变量或临时表,因此SQL Server决定tempdb在需要时自行使用。 我的数据库大小为16Gb,服务器计算机上有32Gb的物理RAM。 我了解MS SQL Server缓存策略会尝试将数据保留在RAM中,以加快类似查询的性能(如果它们需要再次加载相同的数据)。除此之外,它将尝试使用可用的RAM代替tempdb来提高性能,而不会引起磁盘访问。 我想当需要在tempdb SQL Server中存储一些内容的查询出现并且没有足够的RAM可用时,SQL Server有2个选择: 1)卸载一些缓存的数据并使用备用的RAM代替tempdb以避免磁盘写入 2)保留缓存的数据以备将来查询,并开始使用tempdb,这会导致写入慢速磁盘。 我不知道在这种情况下SQL Server会做出什么选择,但我希望它成为选择#1,因为我只关心首次查询(原始)的性能,因为我再也不会向SQL Server发送相同的查询了。 (尽管我可能会发送类似的查询)。 在这种情况下,SQL Server缓存策略是什么? 在避免针对原始查询的tempdb和第二次查询的速度之间,如何平衡RAM的使用? 是否可以以选择#1的方式配置SQL Server?如果是,那怎么办? 我还能如何提高所有原始SQL查询的性能? 由于我不了解SQL Server缓存策略,因此我想将数据库放在RAM磁盘上。这将确保即使SQL Server始终选择#1,任何原始查询都可以高速加载未缓存的数据。这样做的风险是,如果SQL Server继续选择#2,则可能会开始使用更多具有较少可用RAM的tempdb(在我将16Gb用于RAM磁盘后仅剩下16Gb),这将减慢那些导致溢出的原始查询的速度tempdb。 我对SQL 2008 R2的解决方案感兴趣,但是我想对于SQL 2008,SQL 2005可能是相同的,并且可能是SQL 2000。 说明: 该框上没有其他应用程序在运行,它专用于SQL Server。网站在单独的框中运行。 它是Windows Server 2008 R2 Enterprise 64位上的SQL Server 2008 R2 Standard Edition 64位。 …

3
TSQL性能-最小和最大之间的值JOIN
我有两个表存储在其中: IP范围-国家/地区查询表 来自不同IP的请求列表 IP存储为,bigint以提高查找性能。 这是表结构: create table [dbo].[ip2country]( [begin_ip] [varchar](15) NOT NULL, [end_ip] [varchar](15) NOT NULL, [begin_num] [bigint] NOT NULL, [end_num] [bigint] NOT NULL, [IDCountry] [int] NULL, constraint [PK_ip2country] PRIMARY KEY CLUSTERED ( [begin_num] ASC, [end_num] ASC ) ) create table Request( Id int identity primary key, [Date] datetime, IP …

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.