小编Han*_*non的帖子

将 MySQL 进程 ID 解析为运行它的页面?

我在 stackoverflow 上问了这个问题,并被指示在这里问这个问题。

我有几个运行 MySQL 查询的 PHP 脚本。有时,它们会导致服务器卡住或被 MySQL 进程阻塞,这些进程需要一段时间,例如格式错误LEFT JOINs等。

当我运行查询以查找有关已运行的所有当前 MySQL 查询的信息时,是否可以将查询 ID 解析为运行它的文件?

有一个查询一直在休眠 3973 没有关于这个查询的信息,所以我试图找到尽可能多的信息?

mysql

5
推荐指数
1
解决办法
3318
查看次数

服务器所有者可以访问我的数据的深度是否有任何限制?

这是我关于 DBA 的第一篇文章。我想从你那里得到一些明确的想法。首先,这听起来像是讨论,但它不是辩论。我正在寻找的可能是“是的,他们可以为所欲为”或“不,不可能!”

最近我完成了一个web应用程序的开发。完成后,我被告知联系服务器区域部门,以便他们可以帮助我上传我的 SQL 数据库、授予权限等。

所以,我这样做了。他们解释了他们是如何工作的,我们同意上传一个非操作版本的数据库,所以我们可以测试权限等。他们告诉我为他们处理数据库的备份。他们会恢复它。第一件事就是在我心里制造噪音。我不应该是恢复备份的人吗?“嗯……我还不是 dba,我相信他们更清楚。” 是我对自己的回答,因为这些可能是他们的做法。

两天后,他们给我发了一封电子邮件,说备份已启动并提供了一些建议。他们需要对我的数据库表进行规范化并拥有正确的索引。

我的反应并不甜蜜。首先,我们都讨论过它,备份不是操作性的......那么,有任何相关结论吗?......顺便说一下,表格都完全规范化了。其次,他们可以进入那么深吗?如果我的数据库中包含的信息很关键怎么办?

非常感谢,希望对这个问题有一些见解。

sql-server-2008 sql-server

5
推荐指数
1
解决办法
138
查看次数

MySQL order by - 一列以另一列为条件

在 MySQL 中,我有一个表(针对这个问题进行了简化)

CREATE TABLE `projects` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `priority` int(11) DEFAULT '1000000',
  `status` enum('new','in_progress','complete') DEFAULT 'new',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 
Run Code Online (Sandbox Code Playgroud)

我想从按优先级排序的表中进行选择,但将状态为“完成”的行排在最后。

这有效:

SELECT * FROM projects 
order by 
    case 
        when status='complete' then 999999
        when status!='complete' then priority 
    end ASC
Run Code Online (Sandbox Code Playgroud)

但是将 999999 更改为 (select max(priority)+1 from projects) 会产生意想不到的结果,出现状态=完成的结果行第一页的一半。

此外,最后一种方法可能会导致重复计算相同的值。

做这个的最好方式是什么?

mysql order-by

5
推荐指数
1
解决办法
1万
查看次数

将 MySQL 迁移到新服务器

我们有一个在 Windows Server 2008 R2 x64(服务器 A)上运行的 MySQL 5.1 实例复制到 Windows Server 2003 R2(服务器 B)上的另一个 MySQL 5.1 实例。

我们在另一台 Windows Server 2008 R2 x64 机器(服务器 C)上有一个新的 MySQL 5.5 实例。

我想用服务器 C 替换服务器 A。

我的计划是通过像这样“克隆”服务器 B 将服务器 C 设置为服务器 A 的另一个从站:

http://www.redips.net/mysql/add-new-slave/

之后我打算这样做:

http://blesseddlo.wordpress.com/2011/06/03/convert-mysql-slave-to-master/

之后我想将服务器 B 的主服务器更改为服务器 C。

这是一种可行的方法吗?有注意事项吗?将 MySQL 5.5 实例设置为 MySQL 5.1 实例的从属时,是否存在兼容性问题?

我不能只是停止一切并使用,mysqldump因为不会有停机时间,而且我们有大约 25 GB 的数据必须通过千兆 LAN 传输。

mysql windows migration mysql-5.5 mysql-5.1

5
推荐指数
1
解决办法
325
查看次数

针对实时 SQL Server 数据库运行的 Avamar SQL Agent

我们使用一家大公司作为我们的服务提供商。

那家服务公司的技术人员正在非常努力地安装一种叫做 的东西Avamar SQL Agent,据称它将用于替换我旧的可靠的完整、差异和事务日志备份。有人告诉我,它会不断监视 mdf、ndf 和 ldf 文件的任何更改,然后将更改的项目(页面、???)写入某处 (???)。

一旦新技术得到证实,我就完全支持新技术,但我对这种方法持怀疑态度,即我将不再需要采用 SQL Server 本地压缩备份(同样是完整、差异和 tlog)。

到目前为止,我已经采取的立场是,除非并且直到他们能够通过测试向我证明它不会弄乱我的 mdf、ndf 和 ldf 文件并且仍然可以恢复,否则我不会祝福这次冒险。在这里,我不知道什么或谁会做恢复本身……它是 SQL Server 恢复的某种派生,一些 Avamar 恢复,某种组合等。

有没有人对这个产品有任何经验?

sql-server backup transaction-log

5
推荐指数
1
解决办法
4156
查看次数

将生成的系列与选择中的每一行结合起来

下面的选择返回我所有用户拥有的所有项目的数组。

WITH user_projects AS
(SELECT
  u.id as user_id
  ,COALESCE(array_agg(DISTINCT pa.project_id), '{0}'::integer[]) as project_ids
FROM users u
LEFT JOIN project_assignments pa on pa.user_creator_id = u.id
GROUP BY u.id
)

user: 1, project_ids: {1, 2}
user: 2, project_ids: {3, 4}
Run Code Online (Sandbox Code Playgroud)

使用该选择,我想进行报告,该报告将为每个用户显示 12 个月的摘要。

SELECT
  to_char(pk.created_at,'Mon') as mon
 ,extract(year from pk.created_at) as yyyy
 ,up.user_id
 ,COALESCE(count(distinct pk.keyword_id), 0) as total_keywords
FROM user_projects up
LEFT JOIN project_keywords pk on pk.project_id = ANY(up.project_ids::int[])
GROUP BY up.user_id, up.project_ids, 1, 2
Run Code Online (Sandbox Code Playgroud)

输出:

 mon: sept, yyyy: 2014, user_id: 1, …
Run Code Online (Sandbox Code Playgroud)

postgresql join

5
推荐指数
1
解决办法
7284
查看次数

任何作业完成时执行 SP

我在服务器上有很多 SQL Server 作业。每当完成任何作业执行时,我都需要执行 SP。一种困难的方法是在每个调用该 SP 的作业上创建一个步骤。

有没有简单的方法可以做到这一点?作业完成后,SQL Server 是否执行任何 SP 或任何内容?

sql-server sql-server-2012 sql-server-agent

5
推荐指数
1
解决办法
1121
查看次数

如何避免在“匹配时更新”子句中重复相同的条件?

我想将一张表合并到另一张表中。我需要在我的 WHEN MATCHED 子句中应用条件逻辑,理想情况下这样做:

MERGE INTO ATable AS a
USING BTable AS b
ON a.ID = b.ID
WHEN NOT MATCHED THEN
-- Do insert
WHEN MATCHED AND b.NeedsAdjustment = 1 THEN
UPDATE SET
    Col1 = b.Col1 + b.Adjustment
    ,Col2 = b.Col2 + b.Adjustment
    ,Col3 = b.Col3 + b.Adjustment
WHEN MATCHED THEN -- Default case (b.NeedsAdjustment <> 1)
UPDATE SET
    Col1 = b.Col1
    ,Col2 = b.Col2
    ,Col3 = b.Col3
Run Code Online (Sandbox Code Playgroud)

这不是有效的 SQL。根据 MSDN 文档:

如果有两个 WHEN MATCHED 子句,则一个必须指定 UPDATE 操作,一个必须指定 DELETE 操作。 …

sql-server update merge

5
推荐指数
2
解决办法
1735
查看次数

如何以及何时在我的 SQL 语句中使用别名

我有一个查询,我在其中进行了一些计算,然后为该列指定了别名。在下一列中,我想在 IF 语句中使用该计算的结果。当我将别名用作条件时,MySQL 无法识别它,而是要求我重写整个查询,在它周围放置一些括号,然后执行条件检查。
这是 SQL 查询:

SELECT StudentId
    ,SubjectID
    , (COUNT(StudentId) / (
        SELECT COUNT(SubjectID) 
        FROM lectureattendancein 
        WHERE SubjectID ='MIS4' ) * 100) AS Percentage
    , IF((COUNT(StudentId) / (
        SELECT  COUNT(SubjectID) 
        FROM lectureattendancein  
        WHERE SubjectID ='MIS4' 
        )* 100) >= 80, 'ALLOWED', 'NOT ALLOWED') AS ExamAdmit
FROM attendancein 
GROUP BY StudentId, SubjectID 
HAVING SubjectID='MIS4' 
ORDER BY StudentId ASC
Run Code Online (Sandbox Code Playgroud)

我想在 IF 语句中使用名为Percentage的列别名

mysql alias

5
推荐指数
2
解决办法
2128
查看次数

日期范围中数组的元素?

我有一个日期数组,我想知道数组中的任何元素是否出现在给定的日期范围内。

例如(伪代码 - 不起作用,为了可读性而包装):

SELECT ARRAY['2017-01-01'::DATE, '2017-02-03'::DATE] && 
    daterange('2017-01-01', '2017-01-31', '[]');
Run Code Online (Sandbox Code Playgroud)

这个例子试图展示(虽然它不起作用)是我的日期数组和日期范围之间的值之间是否存在重叠。

理想情况下,我可以用集合来做,并确定两者之间是否存在联合,但似乎不可能将 daterange 对象转换为任何东西。

我确实设法让这个工作,但我不知道如何随后减少行:

SELECT daterange('2017-01-01', '2017-01-31', '[]') @> 
    unnest(ARRAY ['2017-01-01' :: DATE, '2016-07-30' :: DATE]);
Run Code Online (Sandbox Code Playgroud)

这将返回多行:

?column?
----------
 t
 f
(2 rows)
Run Code Online (Sandbox Code Playgroud)

有没有人对此有任何指示?任何帮助表示赞赏。

postgresql array range-types

5
推荐指数
1
解决办法
3221
查看次数