小编Rol*_*DBA的帖子

如何在 Mysql 中更改 VIEW 的 DEFINER?

当我运行 mysqldump 时,出现错误:

mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为它foobar是一台不再存在的旧机器。

如何将所有表的定义器更改为 'root'@'localhost'?

mysql mysqldump permissions

41
推荐指数
4
解决办法
13万
查看次数

您如何为繁重的 InnoDB 工作负载调整 MySQL?

假设一个主要包含 InnoDB 表的生产 OLTP 系统

  • 系统失调/配置错误的常见症状是什么?
  • 您最常从默认设置更改哪些配置参数?
  • 您如何在问题出现之前发现潜在的瓶颈?
  • 您如何识别和解决活动问题?

任何详述特定status变量和诊断的轶事将不胜感激。

mysql innodb performance

40
推荐指数
3
解决办法
7万
查看次数

为什么 MySQL 在 MyISAM 或 InnoDB 上没有哈希索引?

我有一个只选择相等的应用程序,我想我应该在 btree 索引上使用哈希索引。令我沮丧的是,MyISAM 或 InnoDB 不支持哈希索引。那是怎么回事?

mysql innodb myisam index

39
推荐指数
3
解决办法
2万
查看次数

是否可以 mysqldump 重现查询所需的数据库子集?

背景

我想提供重现select查询所需的数据库子集。我的目标是使我的计算工作流程可重复(如可重复研究)。

有没有办法可以将这个 select 语句合并到一个脚本中,该脚本将查询的数据转储到一个新数据库中,这样数据库就可以安装在新的 mysql 服务器上,并且该语句可以与新数据库一起使用。除了查询中已使用的记录外,新数据库不应包含其他记录。

更新: 为了澄清起见,我对查询结果的 csv 转储不感兴趣。我需要能够做的是转储数据库子集,以便它可以安装在另一台机器上,然后查询本身可以重现(并且可以针对相同的数据集进行修改)。

例子

例如,我的分析可能会查询需要来自多个(在本例中为 3 个)表中的记录的数据子集:

select table1.id, table1.level, table2.name, table2.level 
       from table1 join table2 on table1.id = table2.table1_id 
       join table3 on table3.id = table2.table3_id
       where table3.name in ('fee', 'fi', 'fo', 'fum'); 
Run Code Online (Sandbox Code Playgroud)

mysql mysqldump join backup select

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

什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

我们在这次迁移中赚到了什么,失去了什么?

迁移后我应该期待什么缺点?

真的没有必要在任何情况下更改应用程序吗?

mysql mariadb database-recommendation

38
推荐指数
3
解决办法
6283
查看次数

是否可以将 SQLite 用作客户端服务器数据库?

是否有任何技术或工具可以在中等规模/流量/并发数据库环境中使用 SQLite?

sqlite

38
推荐指数
3
解决办法
7万
查看次数

多核和 MySQL 性能

RAM 的重要性是一个既定的事实,但在 MySQL 使用 CPU 时,关于内核和多线程重要性的资料要少得多。我说的是在 4cores vs 6cores vs 8cores 上运行 MySQL 的区别等等。

不同的存储引擎使用 CPU 的方式不同吗?

mysql performance

38
推荐指数
2
解决办法
6万
查看次数

MySQL:为什么 mysql.db 中有“测试”条目?

最近,我发布了一个关于 mysql.db 的问题的答案

然后,我开始想我应该问每个人这个问题:

多年来,我一直注意到在安装 MySQL 5.0+ 时,mysql.db填充了两个条目,允许匿名用户访问测试数据库。

您可以通过运行此查询来查看它:

mysql> select * from mysql.db where SUBSTR(db,1,4) = 'test'\G
*************************** 1. row ***************************
                 Host: %
                   Db: test
                 User:
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
           Grant_priv: N
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: N
         Execute_priv: N
*************************** 2. row ***************************
                 Host: %
                   Db: test\_%
                 User:
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y …
Run Code Online (Sandbox Code Playgroud)

mysql security

37
推荐指数
1
解决办法
8597
查看次数

为什么我们在 SQL 查询中使用 Group by 1 和 Group by 1,2,3?

在 SQL 查询中,我们确实使用 Group by 子句来应用聚合函数。

  • 但是在 Group by 子句中使用数值而不是列名的目的是什么?例如:按 1 分组。

mysql syntax plsql group-by

36
推荐指数
3
解决办法
9万
查看次数

重复列以加快查询速度?

标题没有太大意义,但我想不出更好的标题来解决这个问题。

我有以下表格

项目

  • ID
  • 姓名

顾客

  • ID
  • id_project
  • 姓名

付款

  • ID
  • id_customer
  • 日期

当用户进入系统时,他将有权访问某个项目。现在,我想列出该项目的所有付款,这应该很容易:

SELECT FROM payments where id_customer in (SELECT id from customers where id_project = 5)
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果以这种方式向支付表添加一列 id_project 不是更好,那么查询会更容易和更快。

normalization database-design

34
推荐指数
3
解决办法
8702
查看次数