小编Rol*_*DBA的帖子

如何从星期四或一周中的任何其他一天开始的每周结果改进我的 SQL 语句?

我是个新手,我在任何地方都找不到这样做的好方法。我有一个数据库表,其中包含在一周内不同时间记录的统计信息。报告周从星期四开始。该表包含一个日期戳列(日期),用于存储数据的记录时间。

我需要提取给定周的数据(报告周从周四开始)。我编写了以下查询:

   SELECT * 
FROM `table` 
WHERE 1 = CASE 
  WHEN WEEKDAY(NOW()) = 0 THEN DATEDIFF(NOW(),`date`) BETWEEN -2 AND 4
  WHEN WEEKDAY(NOW()) = 1 THEN DATEDIFF(NOW(),`date`) BETWEEN -1 AND 5
  WHEN WEEKDAY(NOW()) = 2 THEN DATEDIFF(NOW(),`date`) BETWEEN -0 AND 6
  WHEN WEEKDAY(NOW()) = 3 THEN DATEDIFF(NOW(),`date`) BETWEEN -6 AND 0
  WHEN WEEKDAY(NOW()) = 4 THEN DATEDIFF(NOW(),`date`) BETWEEN -5 AND 1
  WHEN WEEKDAY(NOW()) = 5 THEN DATEDIFF(NOW(),`date`) BETWEEN -4 AND 2
  WHEN WEEKDAY(NOW()) = 6 THEN DATEDIFF(NOW(),`date`) BETWEEN -3 AND 3 …
Run Code Online (Sandbox Code Playgroud)

mysql mariadb

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

MySQL 5.5中performance_schema的用法是什么?

我已经升级到 MySQL 5.5 版。在那里,我在模式列表中观察到了 performance_schema。

  • 这个新模式的用途是什么..?
  • 我们如何使用此模式进行监控..?
  • 使用这种模式有什么好处..?
  • 启用此模式是否有任何开销..?

mysql schema performance

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

使用力指数

我最近参加了 Facebook MySQL 工程师的演讲,他在那里提到使用FORCE INDEX减少 I/O。

这与 MySQL 查询优化器有关,无需访问数据字典并进行计算。

  • 谁能解释一下这是如何工作的(最好有参考资料)?
  • 这是一个很好的优化实践吗?

mysql index optimization

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

有没有免费的在线协作数据库模式工具?

我对一个免费且简单的 MySQL 工具感兴趣,它可以在创建数据库通用模式时提供在线协作功能。你知道任何?

schema tools database-design

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

“逻辑差异”的定义?

我目前正在阅读CJ Date 的“SQL 和关系理论”。虽然我在书中讲得很远,但我还是有一些基本问题。我想知道“逻辑差异”这个词是什么意思,这本书确实试图用例子解释这个词,但并没有真正解释它的意思(或者我可能理解错了??)

这是书中的一小部分:

我说过关系和关系的图片之间存在逻辑差异。逻辑差异的概念源自维特根斯坦的格言:

  • 所有的逻辑差异都是很大的差异。

我直观地知道逻辑差异意味着什么,我知道关系和关系图片之间的区别是什么。我想要的是“逻辑差异”概念的正式定义,所以我很清楚它的含义。

database-design relational-theory

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

MySQL 集群 RAM 要求

从 MySQL 5.1 开始,数据不再需要完全在内存中。

我读过索引列(我认为整个索引结构)必须仍在内存中(MySQL High Availability,2010,第 533 页“MySQL Cluster 将所有索引列保留在主内存中”)。

鉴于此,如果没有足够的内存(即,一个巨大的数据库(> 100GB 或 1TB),在具有低内存配置的服务器上运行(例如,2 个数据节点,每个节点具有 1GB 的 RAM))会发生什么情况?

mysql memory ndbcluster

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

MySql 推荐硬件

我们公司的服务器目前托管在 VPS 上,我们决定迁移到专用服务器。

在为数据库服务器选择最佳硬件时,我们应该投入更多资源:更好的 CPU(更多内核)?或更多的内存?

最佳投资回报率在哪里?

有什么建议?

mysql database-recommendation

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

我应该将经常更新的列分开吗?

我有一个users包含用户信息的表和一个credits经常更新的列。

  • 在索引页面上,我显示了具有基本用户信息的用户列表,但我不需要积分。

  • 在详细信息页面上,我还显示了用户信息的积分。

两个主要操作在项目中密集。第一个操作是SELECT对索引页的操作。第二个操作是UPDATE对 credits 列的操作。credits列没有被索引,但由于它经常更新,它会影响表上的索引列users吗?如果是这样,我认为我应该将credits列作为表分开,并仅在需要时才加入。这样做,我可以提高SELECT索引页的性能吗?

另外,我正在使用 MySQL。对于经常更新的列,我应该使用什么样的表结构?

mysql index database-design

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

无法利用 MySQL 的最大 CPU 和内存使用量

再会。

我知道这可能是其他问题的重复,但是我已经在许多线程中应用了所有建议,但我仍然遇到同样的问题。

我有一个使用 max 的存储过程3 tables。当我运行该程序时,只30% of my CPU使用了大约25% of RAM.

我坐在一个CPU with 4 cores and 16GB RAM.

my.ini 如下所示:

[client]
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 32M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 128M
thread_cache_size = 16
query_cache_size= 32M
thread_concurrency = 0

log-bin=mysql-bin

binlog_format=mixed

server-id   = 1

innodb_buffer_pool_size = 12G …
Run Code Online (Sandbox Code Playgroud)

mysql innodb performance wamp

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

如何在不停机的情况下为60M记录的大表添加索引?

过去几天我们一直在努力解决一个问题。我们要为一个有60M记录的大表添加索引。起初我们尝试使用基本的 mysql 语法添加它。但它堵塞了我们的生产数据库。该表在生产查询中使用非常频繁。所以一切都受苦了。

我们的数据库托管在 AWS RDS 上。它的Mysql 5.7。我们使用 Laravel 作为 PHP 框架

我们读到的下一件事是,我们可以将当前表复制到新表中。然后为新表添加索引。然后移动 laravel 模型以使用新表。我们认为这是有道理的,而且很容易

但是将表数据从一个表复制到新表需要花费相当多的时间。我们的计算表明这需要几天的时间。我们尝试使用 Laravel 以及 SQL 命令。但无论哪种方式都太慢了。

然后我们尝试将数据导出为 CSV 并导入,但还是太慢了。前几百万条记录插入速度很快,但随后表的插入速度会变得非常慢。

最后我们尝试了mysqldump,我们意识到它在插入时也会锁定新表,所以也许这就是它足够快的原因。将表格复制到新表格大约花了 6 个小时。但是我们在这个方法中丢失了 2M 条记录。我们还检查了导出/导入时有多少记录进入现有表,只有大约 100K。因此导出/导入丢失了 190 万条记录,我们无法找出原因。

在经历了所有这些不同的方法之后,我们决定让应用程序停机并在巨大的表上添加索引

我想知道其他人也面临这个问题吗?有没有办法在一个巨大的表上添加索引而不导致生产停机?或者有没有更快的方法来复制大的 mysql 表而不丢失数据?

mysql percona-tools mysql-5.7 online-operations amazon-rds

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