小编Der*_*ney的帖子

如何在mysql中使用RESTRICT作为外键?

在数据库结构中

  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)

mysql innodb foreign-key

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

您可以在 SQL Server 实例上查看哪些性能计数器来确定它的性能和整体健康状况?

我是埃因霍温 Fontys 大学的学生,我目前正在进行一系列采访以帮助开发 SQL Server 工具,我想从该领域的专家那里得到反馈。

我的问题之一是:

您可以在 SQL Server 实例上查看哪些性能计数器来确定它的性能和整体健康状况?

特别是我对好变坏时的阈值感兴趣。

Jamil Young 埃因霍温 荷兰

performance sql-server

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

如何阻止 MySQL slave 将更改复制到“mysql”数据库?

我已将我的从属设置为不复制“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)

现在,如果我去服务器和问题上GRANTFLUSH 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)

mysql replication

9
推荐指数
2
解决办法
8357
查看次数

如何提高 InnoDB DELETE 性能?

所以我有这个审计表(跟踪我数据库中任何表的操作):

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)

mysql innodb performance delete

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

这是一组正常的 MySQL 权限吗?

在本地测试 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 个任何用户都没有任何表的任何特定权限,因此看起来他们无能为力。这是某种通用安全措施,明确声明不属于任何其他用户组的“任何”用户没有特权吗?

mysql phpmyadmin

9
推荐指数
1
解决办法
7551
查看次数

应用规则后如何查看查询?

来自文档- 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)

postgresql

9
推荐指数
1
解决办法
124
查看次数

如何自定义约束违规消息?

我想为每个约束定义我自己的消息。是否可以在 PostgreSQL 中自定义约束违规消息?

postgresql

9
推荐指数
1
解决办法
2841
查看次数

优化 InnoDB 默认设置

我查看了 my.ini 并看到了各种默认设置。我的数据库在一台独立的 PC 上运行。我想总体上优化 InnoDB 和 MySQL 的性能以提高性能。没有磁盘空间限制。我应该更改哪些默认设置以优化以获得更好的性能、可靠性和可能的​​时间点备份 [高可用性]。

已编辑

目前,每当我通过 MySQL Administrator 上的维护运行“优化表”时,它都会显示:

表不支持优化,改为重新创建+分析

在所有桌子上。我所有的表都是InnoDB,但为什么不支持Optimize?

mysql innodb performance mysql-5.5

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

有哪些重要的 MySQL 状态变量需要关注?

我是一名具有编程背景的新 DBA。因此,我喜欢构建工具来管理任务,以帮助我熟悉技术的复杂性。

在这种情况下,我正在管理多个 MySQL 服务器,并希望构建一个 UI 来查看服务器的运行状况。

需要注意哪些重要的状态变量会在长时间运行的服务器(> 48 小时)上发出危险信号?

我正在寻找的一个例子是qcache_lowmem_prunes变得更大可能表明配置错误query_cache

mysql monitoring

7
推荐指数
1
解决办法
1887
查看次数

如何使用时区名称在 MySQL 中转换时区?

我想在 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 mysql-5.5 timezone

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