在数据库结构中
CREATE TABLE Country (
name varchar(40) NOT NULL,
PRIMARY KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE City (
name varchar(40) NOT NULL,
PRIMARY KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE Map (
country varchar(40) NOT NULL,
city varchar(100) NOT NULL,
PRIMARY KEY (country,city),
FOREIGN KEY (country) REFERENCES Country (name) ON DELETE CASCADE,
FOREIGN KEY (city) REFERENCES City (name) ON DELETE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
我希望City通过这三个相等的命令完整保留 child 中的相应值来删除 parent
FOREIGN KEY (city) REFERENCES City (name) …Run Code Online (Sandbox Code Playgroud) 我是埃因霍温 Fontys 大学的学生,我目前正在进行一系列采访以帮助开发 SQL Server 工具,我想从该领域的专家那里得到反馈。
我的问题之一是:
您可以在 SQL Server 实例上查看哪些性能计数器来确定它的性能和整体健康状况?
特别是我对好变坏时的阈值感兴趣。
Jamil Young 埃因霍温 荷兰
我已将我的从属设置为不复制“mysql”数据库,如此处所述 SHOW SLAVE STATUS\G;
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: replication
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master-bin.000001
Read_Master_Log_Pos: 1660
Relay_Log_File: mysql-relay-bin.000004
Relay_Log_Pos: 478
Relay_Master_Log_File: master-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
**Replicate_Ignore_DB: mysql**
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1660
Relay_Log_Space: 633
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Run Code Online (Sandbox Code Playgroud)
现在,如果我去主服务器和问题上GRANT和FLUSH PRIVILEGES:
GRANT SELECT ON *.* TO `foo`@`localhost` IDENTIFIED BY 'bar';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
然后我回到从服务器并发出:
SHOW GRANTS FOR `foo`@`localhost`; …Run Code Online (Sandbox Code Playgroud) 所以我有这个审计表(跟踪我数据库中任何表的操作):
CREATE TABLE `track_table` (
`id` int(16) unsigned NOT NULL,
`userID` smallint(16) unsigned NOT NULL,
`tableName` varchar(255) NOT NULL DEFAULT '',
`tupleID` int(16) unsigned NOT NULL,
`date_insert` datetime NOT NULL,
`action` char(12) NOT NULL DEFAULT '',
`className` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `userID` (`userID`),
KEY `tableID` (`tableName`,`tupleID`,`date_insert`),
KEY `actionDate` (`action`,`date_insert`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
我需要开始归档过时的项目。该表已增长到大约 5000 万行,因此我可以删除行的最快方法是一次删除一个表(基于tableName)。
这工作得很好,但在一些写入繁重的表上,它不会完成。我的查询删除所有delete对 tupleID/tableName 组合具有关联操作的项目:
DELETE FROM track_table WHERE tableName='someTable' AND tupleID IN (
SELECT DISTINCT tupleID FROM track_table …Run Code Online (Sandbox Code Playgroud) 在本地测试 wamp 设置上使用 phpmyadmin,以及几乎标题所述,有 3 个用户标记为 user = ANY,password = NO,例如:
USER | HOST | Password | Global Priv | Grant
-----+---------+----------+-------------+------
Any | % | No | USAGE | No
Any | Local | No | USAGE | No
Any | Domain | No | USAGE | No
-----+---------+----------+-------------+------
Run Code Online (Sandbox Code Playgroud)
3 个任何用户都没有任何表的任何特定权限,因此看起来他们无能为力。这是某种通用安全措施,明确声明不属于任何其他用户组的“任何”用户没有特权吗?
来自文档- 37.3.1.1。“循序渐进的第一条规则”
CREATE TABLE shoelace_log (
sl_name text, -- shoelace changed
sl_avail integer, -- new available value
log_who text, -- who did it
log_when timestamp -- when
);
CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data
WHERE NEW.sl_avail <> OLD.sl_avail
DO INSERT INTO shoelace_log VALUES (
NEW.sl_name,
NEW.sl_avail,
current_user,
current_timestamp
);
Run Code Online (Sandbox Code Playgroud)
现在有人这样做:
(1) UPDATE shoelace_data SET sl_avail = 6 WHERE sl_name = 'sl7';
Run Code Online (Sandbox Code Playgroud)
解析器生成这个额外的查询
(2) INSERT INTO shoelace_log VALUES (
shoelace_data.sl_name, 6,
current_user, current_timestamp )
FROM shoelace_data
WHERE …Run Code Online (Sandbox Code Playgroud) 我查看了 my.ini 并看到了各种默认设置。我的数据库在一台独立的 PC 上运行。我想总体上优化 InnoDB 和 MySQL 的性能以提高性能。没有磁盘空间限制。我应该更改哪些默认设置以优化以获得更好的性能、可靠性和可能的时间点备份 [高可用性]。
已编辑
目前,每当我通过 MySQL Administrator 上的维护运行“优化表”时,它都会显示:
表不支持优化,改为重新创建+分析
在所有桌子上。我所有的表都是InnoDB,但为什么不支持Optimize?
我是一名具有编程背景的新 DBA。因此,我喜欢构建工具来管理任务,以帮助我熟悉技术的复杂性。
在这种情况下,我正在管理多个 MySQL 服务器,并希望构建一个 UI 来查看服务器的运行状况。
需要注意哪些重要的状态变量会在长时间运行的服务器(> 48 小时)上发出危险信号?
我正在寻找的一个例子是qcache_lowmem_prunes变得更大可能表明配置错误query_cache
我想在 MySQL 中将日期从一个时区转换为另一个时区,我正在尝试的 MySQL 查询是
SELECT DATE_FORMAT(CONVERT_TZ('2015-12-18 06:00:00', '+0:00', '-05:00' ),'%b %d %Y %h:%i %p') AS test
FROM appointment
Run Code Online (Sandbox Code Playgroud)
这是正常工作。现在我遇到的问题是我的数据库使用时区名称作为America/New_York。
有没有办法使用时区名称而不是时区偏移量来转换时区?
mysql ×7
innodb ×3
performance ×3
mysql-5.5 ×2
postgresql ×2
delete ×1
foreign-key ×1
monitoring ×1
phpmyadmin ×1
replication ×1
sql-server ×1
timezone ×1