我试图了解如何最好地解释我们的 MySQL 慢查询日志中显示的查询的锁定时间。
例如,如果 UPDATE 查询有 10 秒的锁定时间。我认为这是更新查询获取锁后的总时间。即使它正在等待先前的选择查询完成但不执行 UPDATE 操作本身,时钟也应该在滴答作响,因为它正在锁定在 UPDATE 查询之后排队的所有 SELECT 查询。
以及 SELECT 查询锁怎么样。为什么一些选择查询有锁定时间?是不是因为有一个 UPDATE 查询跟进,因此他们将一个表锁定在一起。
在 MySQL 中设置复制之前,首先需要将数据传输到从属设备。
由于 MyISAM 表可以作为文件复制。可以将 MyISAM 文件 .myd .myi .frm 复制到从站吗?这足以开始复制吗?
当使用自定义数据目录在 Centos 服务器上启动 mysql 时,您可能会收到类似于以下内容的错误:
2014-10-15 10:23:56 17081 [Warning] Can't create test file /database/mysql/localhost.lower-test
Run Code Online (Sandbox Code Playgroud) 我一直在研究 SQL_BUFFER_RESULT 的用法。大多数情况下,它被称为有助于减少表锁定问题。
使用它似乎是一个不错的选择。
但是,我似乎找不到任何缺点。它是大多数时候应该使用的选项吗?
对于“并发插入”,MySQL参考手册有如下解释:
MyISAM 存储引擎支持并发插入,以减少给定表的读写器之间的争用:如果 MyISAM 表在数据文件中没有空洞(中间删除了行),则可以执行 INSERT 语句将行添加到最后SELECT 语句从表中读取行的同时。
http://dev.mysql.com/doc/refman/5.5/en/concurrent-inserts.html
假设我们的数据库“并发插入”参数设置为“自动”(1)。
我们有一个有间隙的 MyISAM 表。当我们插入新行并填补这些空白时,表是否“立即”准备好接受未来插入查询的“并发插入”?
或者我们是否需要在表知道没有间隙之前运行“优化”?
我们使用 Percona 的 pt-table-checksum 进行 MySQL 复制完整性检查。
是否可以使用某种配置文件传递部分或全部选项?
例如,我们可以在文件中写入我们想要检查的表列表吗?
我理解的手册没有讲这样的文件:http : //www.percona.com/doc/percona-toolkit/2.1/pt-table-checksum.html
我们在 Centos 机器上有一个 MySQL 5.0 服务器。32GB 内存。我们只有一个硬盘,374GB 容量,50GB 可用。我们所有的表都是 MyISAM。
当我们在硬盘中复制一个大文件(2GB-3GB)时,MySQL 会暂时变慢。文件复制只需不到一分钟。但是暂时的减速会持续大约一小时(甚至可能正好是一小时)。
一小时过去了,突然间一切又回到了日常。
感觉好像大文件复制推动 MySQL 开始使用硬盘驱动器作为内存,也许“sar -b”输出可以证明这一点。但是为什么mysql会开始使用硬盘,复制的文件大约是总RAM的10%。
有什么想法可以防止这种情况吗?
这是 sar 输出,文件复制在上午 11:00 左右完成:
10:20:01 AM CPU %user %nice %system %iowait %steal %idle
10:30:01 AM all 5.52 0.00 4.40 5.35 0.00 84.72
10:40:01 AM all 5.38 0.00 4.34 5.34 0.00 84.93
10:50:01 AM all 6.44 0.00 4.86 7.00 0.00 81.70
11:00:01 AM all 6.06 0.00 4.33 6.48 0.00 83.12
11:10:02 AM all 6.18 0.00 6.11 9.60 0.00 78.11
11:20:01 AM all …
Run Code Online (Sandbox Code Playgroud) 即使我们从第一天开始就使用“innodb_file_per_table = 1”。ibdata 文件仍在继续增长。我们数据库的总大小约为 800GB,而 ibdata 文件目前约为 50GB。我们所有的表都是innodb。
当我们使用 innodb_file_per_table 时它如何增长?
可能是 blob、mediumtext 或这些类型的列?
考虑到我们已经使用 innodb_file_per_table,有没有办法缩小这个范围?