我们正在尝试删除一张表,但它被挂起,当我们看到“SHOW PROCESSLIST”命令时,它显示为“正在等待元数据锁定”。即使我们无法对该特定表执行任何操作。有人知道如何解决吗?
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) 将 BIGSERIAL 列添加到大表(约 3 Bil. 行,约 174Gb)的最快方法是什么?
编辑:
NOT NULL) 的递增值。我有一个 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 信息。我试过了:
RESET SLAVE这似乎没有清除这些设置。[[实际上它确实删除了master.info文件,但没有删除内存设置。见下文。]]CHANGE MASTER TO MASTER_HOST='' 由于它最近被弃用,它只是吐出一个错误。my.cnf哪些没有主信息,因为它们是以编程方式添加的。RESET MASTER因为一些 mysql 文档推荐了它。那只会重置 bin 日志。在 MySQL ~5.5.9 上执行此操作的正确方法是什么?谢谢你的帮助。
编辑:
所以事实证明,正如@RolandoMySQLDBA 暗示的那样,RESET SLAVE删除了该master.info文件。但是,在删除从站信息之前,您仍然需要重新启动服务器。
有什么办法不用重启mysqld就可以去掉这个slave信息吗?
我正在查看两台服务器之间的快照复制。这是我所拥有的:
我向公司中的其他 DBA 询问要使用哪种复制类型。有人告诉我使用快照复制。但是,据我了解和阅读,每天晚上加载后快照都会将数据库完全复制到分发服务器,然后完全覆盖其他服务器。
快照是在增量中工作还是每次都是完整的副本?
我想通过 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)。
注意它必须遵循用户的选择条件。
使用 MS SQL 查询浏览器,我可以同时运行多个查询,并且每个结果集都将显示在它自己的窗口中。
PostgreSQL/pgAdmin 有这个功能吗?也许是插件?
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)
我怎样才能得到我的原始定义?
我在一张桌子上有 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"()会进行更新并因此触发第二个触发器,该触发器以错误结束:
Run Code Online (Sandbox Code Playgroud)ERROR: record "new" has no field "field1"
我怎样才能避免这种情况?
如果我在 PostgreSQL 中同时创建了一个索引,我如何才能看到它何时完成?
我正在尝试重建索引以解决索引膨胀问题,我需要将旧索引保留一段时间直到新索引完成,所以我需要知道它何时完成。
这是 PostgreSQL 9.2/3ish
postgresql ×5
mysql ×3
mysql-5.5 ×2
plpgsql ×2
replication ×2
sql-server ×2
concurrency ×1
index ×1
innodb ×1
performance ×1
pgadmin ×1
sequence ×1
snapshot ×1
trigger ×1
update ×1
view ×1