Questions tagged «innodb»

InnoDB:MySQL的符合ACID的存储引擎


7
如何优化大型数据库的mysqldump?
我有一个Symfony应用程序,其中有一个带有57个表的〜2GB InnoDB数据库。数据库的大部分大小都驻留在单个表中(约1.2GB)。我目前正在使用mysqldump每晚备份数据库。 由于使用comcast连接,通常,如果我手动运行转储,则在转储完成之前,我与服务器的连接会超时,导致不得不重新运行转储。[我目前运行一个每天晚上进行转储的cron,这仅用于我手动运行的转储。] 有没有一种方法可以加快转储以解决连接超时问题,还可以限制服务器占用此过程的时间? 顺便说一句,我目前正在努力减少整个数据库的大小,以解决此问题。

4
mysql innodb_buffer_pool_size应该多大?
我有一个仅包含InnoDB表的繁忙数据库,其大小约为5GB。该数据库在使用SSD磁盘的Debian服务器上运行,并且我已将max connections设置为800,这有时会饱和并使服务器停止运行。每秒平均查询量约为2.5K。因此,我需要优化内存使用量,以便为最大可能的连接空间。 我已经看到有关innodb_buffer_pool_size最多应占总内存的80%的建议。另一方面,我从Tuning-primer脚本收到此警告: Max Memory Ever Allocated : 91.97 G Configured Max Per-thread Buffers : 72.02 G Configured Max Global Buffers : 19.86 G Configured Max Memory Limit : 91.88 G Physical Memory : 94.58 G 这是我当前的innodb变量: | innodb_adaptive_flushing | ON | | innodb_adaptive_hash_index | ON | | innodb_additional_mem_pool_size | …
169 mysql  innodb 

5
可以使MySQL使用多个内核吗?
我看到了一些专用的MySQL服务器,它们从未使用过多个内核。我比MySQL的DBA开发人员更多,因此需要一些帮助 设定 这些服务器非常繁重,并带有OLAP / DataWarehouse(DW)类型的负载: 主:96GB RAM,8核心+单个RAID 10阵列 测试:具有4核的32GB RAM 最大的数据库为540 GB,总容量约为1.1TB,大部分为InnoDB表 Solaris 10 Intel-64 MySQL 5.5.x 注意:最大的数据库是从OLTP DR服务器复制的数据库,而DW就是从中加载的。它不是完整的DW:仅持续6个月到6周,因此它比OLTP DB小。 在测试服务器上的观察 3个独立的连接 每个都有一个并发的(并且不同) ALTER TABLE...DROP KEY...ADD INDEX 这3个表格分别有2.5、3.8和450万行 CPU使用率上升至25%(一个核心已满),并且没有更高 3个ALTER需要12-25分钟(最小的一个需要4.5分钟) 问题 要使用多个内核需要什么设置或补丁? 也就是说,为什么MySQL不使用所有可用的内核?(与其他RDBMS一样) 是复制的结果吗? 其他注意事项 我了解RDBMS“线程”和OS“线程”之间的区别 我不是在问任何形式的并行性 InnoDB和线程的一些系统变量不是最优的(寻找快速的胜利) 短期而言,我无法更改磁盘布局 可以根据需要调整操作系统 最小的桌子上的单个ALTER TABLE需要4.5分钟(震惊IMO) 编辑1 两者的innodb_thread_concurrency都设置为8。是的,这是错误的,但不会使MySQL使用多个内核 innodb_buffer_pool_size在主数据库上为80GB,在测试中为10GB(另一个实例已关闭)。现在可以了。 innodb_file_per_table =开 编辑2 innodb_flush_log_at_trx_commit = …

5
如何安全地更改MySQL innodb变量'innodb_log_file_size'?
因此,我对调优InnoDB相当陌生。我正在将表(如有必要)从MyIsam缓慢更改为InnoDB。我在innodb中有大约100MB,因此我将innodb_buffer_pool_size变量增加到128MB: mysql> show variables like 'innodb_buffer%'; +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ | innodb_buffer_pool_size | 134217728 | +-------------------------+-----------+ 1 row in set (0.00 sec) 当我去更改innodb_log_file_size值时(例如,mysql的innodb配置页上的 my.cnf 注释将日志文件大小更改为缓冲区大小的25%。因此,现在,my.cnf如下所示: # innodb innodb_buffer_pool_size = 128M innodb_log_file_size = 32M 重新启动服务器时,出现以下错误: 110216 9:48:41 InnoDB:正在初始化缓冲池,大小= 128.0M 110216 9:48:41 InnoDB:已完成对缓冲池的初始化 InnoDB:错误:日志文件./ib_logfile0的大小不同0 5242880字节 InnoDB:与指定的大小不同.cnf文件0 33554432字节! 110216 9:48:41 …
105 mysql  innodb  myisam  logs 

4
MySQL以任何方式导入巨大的(32 GB)sql转储更快?
我有一个巨大的32 GB SQL转储,需要导入MySQL。我以前不必导入这么大的SQL转储。我照常做: mysql -uroot dbname < dbname.sql 花费的时间太长了。一张桌子大约有3亿行,大约3个小时就达到了150万行。因此,似乎整个过程将花费600个小时(即24天),并且是不切实际的。所以我的问题是,有没有更快的方法可以做到这一点? 进一步的信息/发现 这些表都是InnoDB,并且没有定义外键。但是,有很多索引。 我没有访问原始服务器和数据库的权限,因此无法进行新备份或进行“热”复制等。 此处innodb_flush_log_at_trx_commit = 2建议的设置似乎并没有(明显可见/指数)改善。 导入期间(从MySQL Workbench)的服务器统计信息:https : //imgflip.com/gif/ed0c8。 MySQL版本是5.6.20社区。 innodb_buffer_pool_size = 16M和innodb_log_buffer_size = 8M。我需要增加这些吗?

1
减少mysql中ibdata大小的最佳方法是什么?
我有一些生产服务器,其ibdata文件大小每天都在增加。 它已经消耗了290GB的空间。 服务器中的表主要是InnoDB,并且有大量的读写请求。 日志文件的大小也在增加。表中有大量数据。 如何控制两者的增长规模? 我没有使用innodb_file_per_table。
63 mysql  innodb 




3
为什么InnoDB将所有数据库存储在一个文件中?
MyISAM过去很方便地将每个表存储在相应的文件中。InnoDB在很多方面都取得了进步,但是我不知道为什么InnoDB将所有数据库存储在一个文件中(ibdata1默认情况下)。 我知道InnoDB将按表的各个索引文件映射文件中数据的位置,但是我不明白为什么它将所有数据混合在一个文件中。更重要的是,为什么要混合服务器上所有数据库的数据? MyISAM的一个有趣功能是可以将数据库文件夹复制/粘贴到另一台计算机上,然后使用该数据库(无转储)。

3
mysql中On Delete Cascade和On Update Cascade之间的区别
我在MySQL数据库中有两个表parent,child。我试图基于父表将外键引用添加到我的子表中。有没有之间的任何显著差异ON UPDATE CASCADE和ON DELETE CASCADE 我的父母表 CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; 我的问题是:以下sql查询之间有什么区别。 ON DELETE CASCADE CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB; ON UPDATE CASCADE CREATE TABLE child …

2
InnoDB:错误:升级到mysql 5.6后找不到表“ mysql”。“ innodb_table_stats”
我从5.5升级到mysql 5.6,现在我的日志在启动时满是此类消息 我在这里找到了可能的解决方案,但它似乎并不正式。 http://forums.mysql.com/read.php?22,578559,579891#msg-579891 2013-12-06 21:08:00 7f87b1d26700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found. 2013-12-06 21:08:00 7f87b1d26700 InnoDB: Recalculation of persistent statistics requested for table "drupal"."sessions" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead. 2013-12-06 21:08:07 7f903c09c700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found. …

1
间歇性MySQL崩溃,错误为“致命错误:无法为缓冲池分配内存”
在编辑中添加,2013-05-29:因为这是一个很长的问题和讨论,所以这里是问题和解决方案的简短摘要。我在小型Linux服务器(1 GB内存)上运行MySQL和Apache时遇到问题。Apache一直要求更多的内存,因此,操作系统总是杀死MySQL来重新获得其内存。 解决方案是用Lighttpd替换Apache。完成此操作后,服务器上的内存使用情况已经完全稳定了几个月,而且还没有发生任何类型的崩溃。编辑结束 我是小型虚拟服务器的初学者系统管理员。服务器的主要功能是运行用PHP编写的开源Moodle课程管理系统软件。它依赖于数据库(在本例中为MySQL)和Web服务器(在本例中为Apache)。 该服务器正在运行64位CentOS 5.8版(最终版),具有1 GB内存和200 GB磁盘,内核版本为2.6.18-308.8.2.el5xen。MySQL版本是版本14.14 Distrib 5.5.25,适用于使用readline 5.1的Linux(x86_64)。 我不认为Moodle软件是MySQL的重度用户。当前,只有大约十个教师可以访问它,并且当我使用bzip2转储并压缩整个数据库时,生成的转储大小小于1 MB。 我几个月前就建立了系统。Apache服务器一直保持稳定,但是MySQL崩溃了好几次。我尝试从Web上了解最佳配置,而上次更改/etc/my.cnf文件时,我/usr/share/doc/mysql55-server-5.5.25/my-large.cnf以MySQL随附的文件为例。该文件说这是针对具有512 MB内存的系统的,所以我认为使用与内存相关的配置参数对该系统来说是安全的。(我之前用较小的数字配置了MySQL的与内存相关的参数,我认为这可能导致崩溃。尽管仍然发生崩溃,但现在系统至少要快一些。)这些是当前的内容/etc/my.cnf: # /etc/my.cfg # The main and only MySQL configuration file on [WEBSITE ADDRESS REDACTED]. # Last updated 2012-09-23 by Teemu Leisti. # Most of the memory settings are set to be the same as the …

5
您如何调整MySQL以处理繁重的InnoDB工作负载?
假设生产OLTP系统主要包含InnoDB表 错误/配置错误的系统的常见症状是什么? 您最常更改哪些配置参数的默认值? 在出现问题之前,您如何发现潜在的瓶颈? 您如何识别和解决活动中的问题? 任何详述特定status变量和诊断的轶事都将不胜感激。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.