我已经升级到 MySQL 5.5 版。在那里,我在模式列表中观察到了 performance_schema。
我最近参加了 Facebook MySQL 工程师的演讲,他在那里提到使用FORCE INDEX减少 I/O。
这与 MySQL 查询优化器有关,无需访问数据字典并进行计算。
我对一个免费且简单的 MySQL 工具感兴趣,它可以在创建数据库通用模式时提供在线协作功能。你知道任何?
我目前正在阅读CJ Date 的“SQL 和关系理论”。虽然我在书中讲得很远,但我还是有一些基本问题。我想知道“逻辑差异”这个词是什么意思,这本书确实试图用例子解释这个词,但并没有真正解释它的意思(或者我可能理解错了??)
这是书中的一小部分:
我说过关系和关系的图片之间存在逻辑差异。逻辑差异的概念源自维特根斯坦的格言:
我直观地知道逻辑差异意味着什么,我知道关系和关系图片之间的区别是什么。我想要的是“逻辑差异”概念的正式定义,所以我很清楚它的含义。
从 MySQL 5.1 开始,数据不再需要完全在内存中。
我读过索引列(我认为整个索引结构)必须仍在内存中(MySQL High Availability,2010,第 533 页,“MySQL Cluster 将所有索引列保留在主内存中”)。
鉴于此,如果没有足够的内存(即,一个巨大的数据库(> 100GB 或 1TB),在具有低内存配置的服务器上运行(例如,2 个数据节点,每个节点具有 1GB 的 RAM))会发生什么情况?
我希望创建一个 cron 作业来备份我的 MySQL 数据库。我正在使用这个命令:
$ mysqldump --user="User" --password="Password" -A
--single-transaction > /home/user/Export-`date +"%F"`.sql
Run Code Online (Sandbox Code Playgroud)
这导致 2.5 MB 的文件大小。但是,当我使用同一用户使用 phpMyAdmin 导出功能时,我得到一个 3.7 MB 的文件。
有人可以解释这些差异吗,如果我做错了什么?
我不是一个“合格的”DBA,但是是的,我负责我们在社交应用程序中使用的我自己的数据库。
出于显而易见的原因,我最近在我的数据库上实施了主/从复制。
我想知道的是 MySQL 复制是否会破坏我的数据库的性能,因为对于在我的主数据库上写入的每个用户都会在从数据库上创建一个额外的写入(我可能在这里错了)。
我的奴隶和主人之间没有滞后。因此,复制几乎是瞬间完成的。
我有一个users包含用户信息的表和一个credits经常更新的列。
在索引页面上,我显示了具有基本用户信息的用户列表,但我不需要积分。
在详细信息页面上,我还显示了用户信息的积分。
两个主要操作在项目中密集。第一个操作是SELECT对索引页的操作。第二个操作是UPDATE对 credits 列的操作。credits列没有被索引,但由于它经常更新,它会影响表上的索引列users吗?如果是这样,我认为我应该将credits列作为表分开,并仅在需要时才加入。这样做,我可以提高SELECT索引页的性能吗?
另外,我正在使用 MySQL。对于经常更新的列,我应该使用什么样的表结构?
我试图了解何时/何地使用中继日志是有益的。根据文档,作为 I/O 线程的结果,mysql 从 master 的二进制日志中捕获和写入事件。然后,SQL 线程执行从中继日志中的语句。
目前,我在从站上禁用了中继日志,但它没有影响复制。它仍然表现良好。
如果复制需要 SQL 线程从中继日志中读取语句以便执行它们,为什么它在没有中继日志的情况下仍然可以工作?
谢谢
过去几天我们一直在努力解决一个问题。我们要为一个有60M记录的大表添加索引。起初我们尝试使用基本的 mysql 语法添加它。但它堵塞了我们的生产数据库。该表在生产查询中使用非常频繁。所以一切都受苦了。
我们的数据库托管在 AWS RDS 上。它的Mysql 5.7。我们使用 Laravel 作为 PHP 框架
我们读到的下一件事是,我们可以将当前表复制到新表中。然后为新表添加索引。然后移动 laravel 模型以使用新表。我们认为这是有道理的,而且很容易
但是将表数据从一个表复制到新表需要花费相当多的时间。我们的计算表明这需要几天的时间。我们尝试使用 Laravel 以及 SQL 命令。但无论哪种方式都太慢了。
然后我们尝试将数据导出为 CSV 并导入,但还是太慢了。前几百万条记录插入速度很快,但随后表的插入速度会变得非常慢。
最后我们尝试了mysqldump,我们意识到它在插入时也会锁定新表,所以也许这就是它足够快的原因。将表格复制到新表格大约花了 6 个小时。但是我们在这个方法中丢失了 2M 条记录。我们还检查了导出/导入时有多少记录进入现有表,只有大约 100K。因此导出/导入丢失了 190 万条记录,我们无法找出原因。
在经历了所有这些不同的方法之后,我们决定让应用程序停机并在巨大的表上添加索引
我想知道其他人也面临这个问题吗?有没有办法在一个巨大的表上添加索引而不导致生产停机?或者有没有更快的方法来复制大的 mysql 表而不丢失数据?
mysql ×8
index ×2
performance ×2
replication ×2
schema ×2
amazon-rds ×1
backup ×1
memory ×1
mysql-5.5 ×1
mysql-5.7 ×1
mysqldump ×1
ndbcluster ×1
optimization ×1
tools ×1