小编Rol*_*DBA的帖子

如何使 InnoDB 表中的 CREATE INDEX 更快

我有 RHEL 5 平台和 8G RAM 和 MySQL 版本 14.12 distrib 5.0.86。我想在一个 InnoDB 表中创建索引,但是需要很长时间:

Time | State             | Info
2291 | copy to tmp table | create index index_test
Run Code Online (Sandbox Code Playgroud)

该表有 8,000,000 行,在 /etc/my.cnf

innodb_buffer_pool_size = 4G
Run Code Online (Sandbox Code Playgroud)

但还是太慢了。

如何使 innodb 表中的创建索引更快?


我已经有了这些变量:

read_buffer_size = 2M
sort_buffer_size = 8M
tmp_table_size   = 64M
Run Code Online (Sandbox Code Playgroud)

显示创建 user_t\G

CREATE TABLE `user_t` (
  `t_id` mediumint(8) unsigned NOT NULL auto_increment,
  `user_id` varchar(50) NOT NULL default '',
  `event_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `user_A` double(11,2) NOT …
Run Code Online (Sandbox Code Playgroud)

mysql innodb index

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

MySQL使用通配符检查组是否重复?

    +----+--------------+-----+-----------+----------+
    | ID | NAME         | AGE | ADDRESS   | SALARY   |
    +----+--------------+-----+-----------+----------+
    |  1 | Ramesh Olive |  32 | Ahmedabad |  2000.00 |
    |  2 | Tan Kau      |  25 | Delhi     |  1500.00 |
    |  3 | Jason Tan Kau|  25 | Delhi     |  2000.00 |
    |  4 | Chaitali     |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik       |  27 | Bhopal    |  8500.00 |
    |  6 | Hardik Jass  |  27 | Bhopal …
Run Code Online (Sandbox Code Playgroud)

mysql duplication group-by

5
推荐指数
1
解决办法
1681
查看次数

wamp\bin\mysql\mysql5.5.24\data目录下的大文件

我发现这些文件位于Windows 2008 服务器上的wamp\bin\mysql\mysql5.5.24\data文件夹中。

它们在 40 GB 驱动器上消耗大约 22 GB。

在此处输入图片说明

我正在使用名为moodle 的LMS,这可能会启动它们的创建,我不确定。

我试图确定:

  1. 什么是创建这些文件?

  2. 我可以删除它们以回收驱动器空间吗?

mysql windows logs mysql-5.5

5
推荐指数
1
解决办法
5473
查看次数

当 ARCHIVE 不可用时,哪个 MySQL 存储引擎与 ARCHIVE 最相似?

我有一个表,其中包含一个经常写入的事件日志,相比之下,它很少读取。我很想使用ARCHIVE引擎,因为它基本上就是为此而设计的。但是,我的托管服务提供商不提供此引擎。

唯一可用的(有用的)选项是 MyISAM、InnoDB 和 CSV。我敢肯定,我应该使用CSV这个选项,让我们优惠的那一个。

我正在寻找的是提供最佳替代方案的引擎,请记住以下几点:

  • 好的压缩会非常好。许多数据在行之间可能非常相似(就像日志消息的情况一样)
  • 我不需要快速查找。索引并不是真正必要的。同样,我希望尽可能多地节省空间。
  • 需要支持很多行。因此需要压缩和小足迹。
  • 确实有另一个表的外键,但没有必要保留这种关系。每个日志条目都有一个与之关联的名称,该名称存储在另一个不会更改的表中。

所以基于此,InnoDB 或 MyISAM 哪个更好。我知道这台服务器上安装的 MyISAM 引擎只支持 2^32 行。如果 InnoDB 对压缩有类似的支持并且支持更多的行,那会更好(但我不知道是不是这样)。

mysql innodb myisam storage-engine

5
推荐指数
1
解决办法
618
查看次数

如何找出 MySQL 表上次被分析的时间?

我主要对 InnoDB 感兴趣,但也对 MyISAM 感兴趣。

我环顾 information_schema 并没有在任何地方看到这些数据。

我正在使用 MySQL 5.5.16。

mysql innodb myisam mysql-5.5

5
推荐指数
1
解决办法
8552
查看次数

MySQL 5.5 - Innodb - innodb_log_file_size 大于 4GB 的总和?

在线阅读有关 innodb_log_file_size 时,它说

日志文件的总大小必须小于 4GB

那么如果它需要更大呢?

在书籍和网上,它说将 innodb_log_file_size 设置为至少一个小时的写入值。

目前我有 2 个 1GB 的日志文件,在计算Innodb_os_log_written1 小时时,至少需要 10GB。2GB 的日志文件只能在我们的峰值负载下进行 20 分钟的写入。

蒂亚!

mysql innodb tuning mysql-5.5

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

确定 MySQL InnoDB 表是否在其自己的文件中,而不是在系统表空间中的最佳方法

我有一个 MySQL 开发服务器,它在某些数据库中使用 InnoDB 表。它最初是使用默认值设置的,因此所有数据都进入系统表空间(例如主表空间)ibdata1文件)。一路上,我启用了innodb_file_per_table以便新的数据库表进入它们自己的文件。

我现在想通过删除一些开发数据库来回收磁盘空间。我知道我必须 mysqldump 并重新导入系统表空间中的那些数据库。确定重点关注哪些的最佳方法是什么?

我没有看到任何明显的东西 information_schema数据库中。我可以使用 SSH shell 手动浏览服务器,但我正在寻找一种更自动化或更优雅的方式来做到这一点。

在一些较旧的数据库中,我只看到.frm数据库目录中的文件,在较新的数据库中我看到.frm.ibd文件。这似乎是知道数据在哪里的关键......

健全性检查:是否可以通过 mysqldump 一半的数据库来回收空间,或者你真的必须对每个数据库都做?该服务器中有 54 个使用 InnoDB 表的数据库。

注意:在 UNIX 上使用 MySQL v5.1。

mysql innodb mysqldump

5
推荐指数
1
解决办法
3474
查看次数

PostgreSQL:master和standby的archive命令可以指向同一个目录吗?

我在集群中使用流式复制和 PITR(WAL 文件),目前我有不同版本postgresql.conf的主服务器和备用服务器。

文件中唯一的区别是归档命令,它指向不同的目录。

例如,在主人我有:

archive_command = 'cp %p /dbckp/server1master/%f'
Run Code Online (Sandbox Code Playgroud)

在待机状态下:

archive_command = 'cp %p /dbckp/server2master/%f'
Run Code Online (Sandbox Code Playgroud)

我认为,如果备用系统在“备用模式”下没有生成任何档案,我可以使用相同的目录并在单个postgresql.conf.

postgresql replication postgresql-9.1

5
推荐指数
1
解决办法
2125
查看次数

使用 AUTOCOMMIT = 0 是否更好

AUTOCOMMIT = 0如果插入查询看起来像这样,在 MySQL 中批量插入数据之前使用(用于性能调整)是否更好

INSERT INTO SomeTable (column1, column2) VALUES (val1,val2),(val3,val4),... ?

mysql innodb auto-commit

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

如何检查独立于使用的 SQL 数据库的列上是否存在 INDEX

无论使用的实际 SQL 数据库系统如何,是否有统一的方法来检查给定列的 INDEX 是否存在?

例如,对于 MySQL,可以使用SHOW CREATE TABLE mytable. 如果列mycolumn有一个索引,结果会是这样的:KEY 'Index_1' ('mycolumn')

这个指标KEY是所有SQL数据库系统统一的吗?

有没有更好的方法来检查索引?

mysql index information-schema

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