小编dez*_*zso的帖子

由于表显示正在等待元数据锁定,因此无法删除该表

我们正在尝试删除一张表,但它被挂起,当我们看到“SHOW PROCESSLIST”命令时,它显示为“正在等待元数据锁定”。即使我们无法对该特定表执行任何操作。有人知道如何解决吗?

mysql innodb mysql-5.5

13
推荐指数
2
解决办法
3万
查看次数

为什么我的 ORDER BY 在 EXCEPT 之前(慢)而不是之后(快)对两个表进行排序?

SQL Server 2008 R2 查询优化器拼图

我们有两个表,都包含 900 万行。70.000 行不同,其他相同。

这很快,13秒,

select * from bigtable1
except select * from similar_bigtable2
Run Code Online (Sandbox Code Playgroud)

这对输出进行排序并且也很快,13 秒,

select * into #q from bigtable1
except select * from similar_bigtable2
select * from #q order by sort_column
Run Code Online (Sandbox Code Playgroud)

虽然这非常缓慢:

;with q as (
    select * from bigtable1
    except select * from similar_bigtable2
)
select * from q order by sort_column
Run Code Online (Sandbox Code Playgroud)

甚至我有时用来提示 SQL Server 需要预先计算查询的某个部分才能继续执行的“技巧”也不起作用并导致查询速度变慢:

;with q as (
    select top 100 percent * from bigtable1
    except select * from …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server

12
推荐指数
1
解决办法
2869
查看次数

将串行列添加到大表的最有效方法

将 BIGSERIAL 列添加到大表(约 3 Bil. 行,约 174Gb)的最快方法是什么?

编辑:

  • 我希望该列是现有行 ( NOT NULL) 的递增值。
  • 我没有设置填充因子(回想起来,这似乎是一个错误的决定)。
  • 我对磁盘空间没有问题,只是希望它尽可能快。

postgresql performance sequence update

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

如何将 MySQL 以前的 slave 更改为 master 并删除 slave 状态信息?

我有一个 master -> slave 配置,其中 master 失败了。我已经能够将旧奴隶重置为主人,并将旧主人重置为奴隶。美好的。

我似乎无法做的是删除旧从机上的主信息,现在是新主。我懂了:

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
Run Code Online (Sandbox Code Playgroud)

我已经阅读了很多MySQL 文档,但我仍然没有找到一种方法来清除 new-master 中的 slave 信息。我试过了:

  1. RESET SLAVE这似乎没有清除这些设置。[[实际上它确实删除了master.info文件,但没有删除内存设置。见下文。]]
  2. CHANGE MASTER TO MASTER_HOST='' 由于它最近被弃用,它只是吐出一个错误。
  3. 检查my.cnf哪些没有主信息,因为它们是以编程方式添加的。
  4. RESET MASTER因为一些 mysql 文档推荐了它。那只会重置 bin 日志。
  5. 在内部 MySQL 表中查看是否可以找到要清除的字段。

在 MySQL ~5.5.9 上执行此操作的正确方法是什么?谢谢你的帮助。


编辑:

所以事实证明,正如@RolandoMySQLDBA 暗示的那样,RESET SLAVE删除了该master.info文件。但是,在删除从站信息之前,您仍然需要重新启动服务器。

有什么办法不用重启mysqld就可以去掉这个slave信息吗?

mysql replication mysql-5.5

12
推荐指数
3
解决办法
4万
查看次数

SQL Server 快照复制是每次都完全复制数据还是发出增量?

我正在查看两台服务器之间的快照复制。这是我所拥有的:

  • 500GB 数据库
  • ~500MB 每晚 bcp 负载
  • ~50MB 每日交易量

我向公司中的其他 DBA 询问要使用哪种复制类型。有人告诉我使用快照复制。但是,据我了解和阅读,每天晚上加载后快照都会将数据库完全复制到分发服务器,然后完全覆盖其他服务器。

快照是在增量中工作还是每次都是完整的副本?

replication sql-server sql-server-2008-r2 snapshot

12
推荐指数
1
解决办法
4276
查看次数

从 PostgreSQL 获取随机行?

我想通过 id 从我的表中随机获取一行。

我的表:

ID|Word     |Dificult|Category_id|
1 |'Dumb'   |'Easy'  | 3         |
2 |'Leopard'|'Medium'| 6         |
Run Code Online (Sandbox Code Playgroud)

如果我的用户选择了一个类别和一个困难,我会选择一个带有用户参数的随机单词,例如:

idRaffle := raffle.id;
   -- raffle.id = An id that postgres will bring me by some raffle function. 
d := 'Easy';
c := 3;
select * from words where id=idRaffle and Dificult=d and Category_id=c

raffle.id
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得那个随机行 id ( raffle.id)。

注意它必须遵循用户的选择条件。

postgresql plpgsql

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

pgAdmin 显示多个结果集

使用 MS SQL 查询浏览器,我可以同时运行多个查询,并且每个结果集都将显示在它自己的窗口中。

PostgreSQL/pgAdmin 有这个功能吗?也许是插件?

postgresql pgadmin

12
推荐指数
1
解决办法
6267
查看次数

如何获取mysql视图定义?

Show create view viewName不显示正确格式的文本。如何获得格式正确的 SQL?

例如,我创建了一个像 的视图create view v1 as select * from mysql.uer,但它返回如下:

CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER 
VIEW v1 AS 
    select 
        mysql.user.Host AS Host,
        mysql.user.User AS User,
        mysql.user.Password AS Password,
        mysql.user.Select_priv AS Select_priv,
        ... ..., 
        mysql.user.Grant_priv AS Grant_priv,
        mysql.user.References_priv AS References_priv,
        mysql.user.Index_priv AS Index_priv,
        mysql.user.Alter_priv AS Alter_priv
    from mysql.user
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到我的原始定义?

mysql view

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

如何防止 PostgreSQL 触发器被另一个触发器触发?

我在一张桌子上有 2 个触发器;一种适用于插入:

CREATE TRIGGER "get_user_name"
AFTER INSERT ON "field_data"
FOR EACH ROW EXECUTE PROCEDURE "add_info"();
Run Code Online (Sandbox Code Playgroud)

这会更新表中的一些值。
还有一个用于更新(填充历史表):

CREATE TRIGGER "set_history"
BEFORE UPDATE ON "field_data"
FOR EACH ROW EXECUTE PROCEDURE "gener_history"();
Run Code Online (Sandbox Code Playgroud)

问题是,当我在表中插入新行时,该过程"add_info"()会进行更新并因此触发第二个触发器,该触发器以错误结束:

ERROR:  record "new" has no field "field1"
Run Code Online (Sandbox Code Playgroud)

我怎样才能避免这种情况?

postgresql trigger plpgsql postgresql-9.3

11
推荐指数
2
解决办法
7709
查看次数

在 PostgreSQL 中检测 CREATE INDEX CONCURRENTLY 何时完成

如果我在 PostgreSQL 中同时创建了一个索引,我如何才能看到它何时完成?

我正在尝试重建索引以解决索引膨胀问题,我需要将旧索引保留一段时间直到新索引完成,所以我需要知道它何时完成。

这是 PostgreSQL 9.2/3ish

postgresql index concurrency

11
推荐指数
2
解决办法
5908
查看次数