我有一个运行良好的生产 MySQL 5.1 数据库,但我想提高查询性能。我从未使用过分区,只是浏览了手册。
我有两个表涉及列上的复合键:
Bill_Num Bill_Date
我想在 Bill_Date 创建分区。该表包含四年的记录。我想知道一个新的分区表将如何适应未来几年?我还想知道是否需要更改现有查询中的表名并将表名替换为新的分区表名?
我有一个带有 SP4 的 SQL Server 2005 Std (x64),它有一个我似乎无法杀死的过程。如果我查看 sys.dm_exec_requests,我会看到 SPID 103,wait_type 为 LCK_M_SCH_M,状态为 SUSPENDED,命令为 KILLED/ROLLBACK。然而,SPID 并没有消失。我什至可以执行 sp_who 103 并且我看到带有 KILLED/ROLLBACK 的 SPID。自从我杀死 SPID 以来,它的当前等待时间接近 20 小时。
此外,运行KILL 103 WITH STATUS ONLY返回 0% 已完成
我们有两个节点节点 A 和 B 的主对主复制,两者都在虚拟环境中。最初,节点 A 出现中断(磁盘空间问题)并停止复制。应用程序级流量已转移到节点 B 并重新定位节点 A 数据存储并提供可用空间。
节点 A 已成功启动并启动。在与节点 A 同步时,复制已开始并在节点 B 中出错,并且节点 B 中的 bin 日志已损坏。根本原因仍然是个谜。但是分析日志可以发现一些重复的条目,下面是错误日志信息:
[ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236).
[ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position', Error_code: 1236
111014 20:25:48 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.001067', position 183468345.
Run Code Online (Sandbox Code Playgroud)
在这种情况下我们如何处理复制?我们可以跳过当前的 …
我想将所有用户和角色对象从 Oracle 10g 数据库导出到另一个。我用谷歌搜索,但我不知道如何去做。
首先我使用这个命令:
exp system/root@ [DB_Name] file= [Back_file_name] owner=( [Owner_Name] )
但问题是某些表设置取决于用户权限。因此我还想导出用户对象。
例如,可以使用以下命令导出所有对象:
exp system/root@ [DB_Name] Full=Y file= [Back_file_name]
但是此命令不会为我导出所需的对象。
我只想导出:
这可能吗?
我正在学习数据库设计并寻找一些工具,最好是开源软件,可以帮助从 ERD 到数据库,反之亦然。
作为记录,我使用的数据库是 MySQL。
我从未找到将一行的多个字段索引为索引条目或在 MySQL 上模拟此功能的好方法。
当您将字段用作标签或类似概念时,就会出现问题。例如:字段名称为 tag1、tag2、tag3。要快速搜索具有特定标签的行,您需要有 3 个索引并以最基本和最明显的方式执行 3 个单独的查询。
有没有办法将这 3 个字段索引为一个索引的条目,只允许一次搜索。
ID tag1 tag2 tag3
-- ---- ---- ----
01 abc xyz bla
02 foo bar ble
03 xyz bla bar
index
abc -> 01
bar -> 02 03
bla -> 01 03
ble -> 02
foo -> 02
xyz -> 01 03
Run Code Online (Sandbox Code Playgroud)
或者有没有其他方法可以有效地做到这一点?
我在 MSSQL 课上教过,这是如何连接两个表
Run Code Online (Sandbox Code Playgroud)select * from FirstTable A JOIN SecondTable B on A.ID= B.ID
现在在我的职业生涯中,我遇到过这样的 JOIN 查询
Run Code Online (Sandbox Code Playgroud)select * from FirstTable A, SecondTable B where A.ID=B.ID
我知道第二种选择曾经是常态,但现在可能已经放弃了。
我发现在我加入 6+ 个表 + 有多个子查询的复杂查询中,第二种形式更容易理解,而且简短漂亮。
问题
我有一个从列中解析字符串值的查询:
SELECT left(DateTimeSent, 17) AS timesent FROM allog_07_11_e query1
Run Code Online (Sandbox Code Playgroud)
当我做:
SELECT left(DateTimeSent, 17) AS timesent FROM allog_07_11_e query1.timesent != '0'
Run Code Online (Sandbox Code Playgroud)
我得到:
Msg 207, Level 16, State 1, Line 1
Invalid column name 'timesent'.
Run Code Online (Sandbox Code Playgroud)
任何想法为什么?
我有这个表结构和数据:
CREATE TABLE IF NOT EXISTS `default_relations_users` (
`id_user_rq` int(11) NOT NULL,
`id_user_ap` int(11) NOT NULL,
UNIQUE KEY `rusers_rq_ap_idx` (`id_user_rq`,`id_user_ap`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
INSERT INTO `default_relations_users` (`id_user_rq`, `id_user_ap`) VALUES
(1, 2),
(1, 3),
(1, 4),
(2, 1),
(2, 2),
(2, 3);
Run Code Online (Sandbox Code Playgroud)
我只需要获取值在左侧但不在右侧的行,例如:将不会选择 1,2 和 2,1 但 1,3 和 1,4 是。我试试这个查询:
SELECT * FROM default_relations_users
WHERE default_relations_users.id_user_rq = 1
AND NOT EXISTS (SELECT id_user_ap FROM default_relations_users WHERE id_user_ap = 1)
Run Code Online (Sandbox Code Playgroud)
也许我不明白子查询是什么意思,或者我以错误的方式使用。所以有什么帮助吗?
我的网站有不同的内容类型。所有内容类型都应该是可标记的(除非在模型中指定,无论如何)。我可以为我的设计想到 2 个选项:
2 个表选项:1 个标签表(+另一个,其 i18n 内容)加上 1 个关联表(content_type、content_id、tag_id)。
优点:
潜在的缺点:
许多表格选项:1 个标签表格,每种内容类型的关联表格。
优点:
缺点:
所以我的想法是使用第一个设计(2 个表)。但我不是数据库专家......你会推荐第二种选择吗?为什么 ?
mysql ×6
erd ×1
export ×1
import ×1
index ×1
innodb ×1
join ×1
maintenance ×1
optimization ×1
oracle-10g ×1
partitioning ×1
performance ×1
process ×1
query ×1
replication ×1
schema ×1
sql-server ×1
subquery ×1
tools ×1