小编Rol*_*DBA的帖子

为什么 mysql 5.5 比 5.1 慢(linux,使用 mysqlslap)

my.cnf(5.5 和 5.1 是一样的):

back_log=200
max_connections=512
max_connect_errors=999999
key_buffer=512M
max_allowed_packet=8M
table_cache=512
sort_buffer=8M
read_buffer_size=8M
thread_cache=8
thread_concurrency=4
myisam_sort_buffer_size=128M
interactive_timeout=28800
wait_timeout=7200
Run Code Online (Sandbox Code Playgroud)

mysql 5.5:

..mysql5.5/bin/mysqlslap -a --concurrency=10 --number-of-queries 5000 
      --iterations=5 -S /tmp/mysql_5.5.sock --engine=innodb
Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 15.156 seconds
        Minimum number of seconds to run all queries: 15.031 seconds
        Maximum number of seconds to run all queries: 15.296 seconds
        Number of clients running queries: 10
        Average number of queries per client: 500
Run Code Online (Sandbox Code Playgroud)

mysql5.1:

..mysql5.5/bin/mysqlslap -a --concurrency=10 …
Run Code Online (Sandbox Code Playgroud)

mysql mysql-5.5 mysql-5.1

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

事务日志和二进制日志有什么区别?

来自 SQL Server 商店,我现在使用 MySQL,我很好奇。

MySQL的二进制日志和MSSQL的事务日志有什么区别?

从目前的前景来看,似乎每个 MySQL 实例只有一个二进制日志,而不是 MSSQL 中每个数据库的事务日志。

mysql sql-server transaction-log

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

ER 图的重要性

我是一名学生,作为我的学术界的一部分,我正在开发几个项目。

在为其中一个项目开发数据库时,我们遇到了一种情况,我们考虑是否需要 ERD。目前,并不是我们每个人都同意先开发 ERD,然后从它开发数据库。

大多数人更喜欢直接根据纸上要求的系统口头开发数据库。

现在,我严格遵循数据库原则。我认为数据库应该只从 ERD 开发。所以,我只想知道以下几点:

  • 行业是否遵循这些原则?
  • 我只是在浪费时间开发 ERD 吗?
  • 开发 ERD 有什么好处?

erd database-design

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

MySQL 分区:分区数量和每个分区的大小之间是否存在性能权衡?

我有一个大表(几亿行),我想对其进行有效分区。我的问题是分区大小和分区数之间是否存在权衡。据我所知,分区中使用的列上的大多数查询会更快,因为查询(对于大多数查询)只需要在适用于查询的分区内进行搜索。因此,为了最大限度地提高效率,您应该将大表划分为最大数量的分区,从而使每个分区尽可能小是有道理的。对于 MySQL,这意味着 1024 个分区。但是,拥有大量分区是否有任何性能缺陷?是这样,如何找到最佳分区数?

注意:在 stackoverflow 上已经有一个有点类似的问题,但只有一个答案,(从我的角度来看)没有达到目标。所以我会用我自己的方式陈述这个问题......希望它更清楚

mysql performance partitioning

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

InnoDB 插入速度更快

我是一名研究生,正在使用 Mondrian OLAP 研究 OLAP。所以我想在初始加载时更快地将数据插入 InnoDB (MySQL 5.5)。在这种环境下,唯一的用户是我,所以我认为可以对插入速度进行更宽松的设置。目前,我正在使用以下技术。

  • 禁用 log_bin
  • 使能够 skip-innodb-doublewrite
  • 设置transaction_isolationREAD-COMMITTEDREAD-UNCOMMITTED(实际上READ-COMMITED
  • 设置innodb_flush_log_at_trx_commit02(实际上0
  • 设置innodb_buffer_pool_size为 5GB(系统有 6GB RAM)

有没有更多的技术可以在 InnoDB 上更快地插入?我必须修改innodb_io_read_threadinnodb_io_write_thread吗?如果您需要更多信息,请告诉我。

mysql innodb insert mysql-5.5

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

Amazon RDS 上的数据库连接过多

我们在用户在 Drupal 中运行查询/视图时遇到问题,这有时会导致我们的网站冻结。发生冻结是因为查询导致数据库连接数上升到 400+,并且基本上只要站点超过 100 个数据库连接,站点就会非常慢并且没有响应。

我们正在使用 MySQL Red Hat Linux 运行 Amazon RDS

我们在前端应用服务器上有足够大的EC2,以及足够大的RDS。

我们现在解决这个问题的方法是找到有问题的查询,并杀死它。一旦查询被终止...我们的数据库连接将下降到大约 20,这是您在监视站点统计信息时看到的正常数量。

有没有办法停止有问题的查询并在它运行太长时间并消耗连接之前将其杀死?我试图在错误查询发生之前自动终止它,或者至少在 30 秒后意识到它是一个错误查询并终止它。

mysql amazon-rds

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

如何从单个用户中正确删除“REQUIRE SSL”?

我通过执行以下操作成功地向单个用户授予了 REQUIRE SSL...

mysql -u"${targetMySqlUser}" -p"${targetMySqlPass}" -e "GRANT USAGE ON dbname.* TO 'dbusername'@'%' REQUIRE SSL;"
Run Code Online (Sandbox Code Playgroud)

但是我无法使用撤销从用户那里删除或撤销此标志。我想我正在与语法作斗争。是否有适当的方法使用“撤销”命令将其删除,而不撤销整个权限?

MySQL 5.5 手册、这个站点和互联网并没有帮助我找到合适的反方式。

此 SQL 语句将起作用。

UPDATE mysql.user SET ssl_type = '' WHERE ssl_type = 'any' ; FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)

但我相信哪里GRANT REQUIRE SSL有我必须的REVOKE REQUIRE SSL,不是吗?

mysql permissions mysql-5.5 ssl

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

如何提高 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万
查看次数

加载从 mysqldump 创建的数据时如何显示警告?

我有一个很大的 .sql 文件,里面有很大的 insert into ... values ... 语句。其中许多语句在执行期间会生成警告。如何让 mysql 打印警告?

如果它击中 control-C,则导入停止,我将返回 OS 命令行。

以下是运行 SQL 的示例输出:

Query OK, 9827 rows affected, 5403 warnings (0.20 sec)
Records: 9827  Duplicates: 0  Warnings: 5403

Query OK, 9859 rows affected, 5247 warnings (0.20 sec)
Records: 9859  Duplicates: 0  Warnings: 5247
Run Code Online (Sandbox Code Playgroud)

mysql mysqldump backup

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

MySQL 二进制日志 - 跳过一个表

有没有办法跳过二进制日志中的特定表?

我已将二进制日志配置为每晚备份之间的增量备份策略。但是我们有一个巨大的参考表,我们将每晚从批处理(70GB 表)中更新。此表仅供读取,并且每晚使用mysqlimport.

在这个仅供参考的表的更新过程中,二进制日志导致了相当严重的延迟(尤其是当我进行完整的 70GB 更新时)。基本上它必须做两次 70GB。糟糕。

参考表当前正在使用 MyISAM(我阻止 InnoDB 尝试加载它,因此尝试使用 MyISAM)。

mysql logs binlog

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