Questions tagged «innodb»

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

1
删除InnoDB数据库时出错
我试图在mysql中删除数据库,但每次遇到此错误 ERROR 2013 (HY000): Lost connection to MySQL server during query 甚至以root用户身份登录。 最初,我有一个无法重新创建的损坏的表,因此我决定重新创建该数据库。我每个表都有innodb文件,不确定是否重要。 如何删除该数据库?
8 mysql  innodb 

3
MySQL缓慢使用内存,直到它开始使用交换
我正在运行1gb的RAM机架数据库服务器。由于某种原因,在大约2天的时间内,内存使用量从使用很少的交换空间变为使用100mb。如果我不重新启动sql,它将继续使用更多交换。(我的my.cnf文件如下所示,内存使用情况如下所示) 背景知识:我大约有50个活动数据库,这些数据库具有与使用INNODB的表相同的架构。我有几个使用MyISAM的流量很少的数据库。 在INNODB表上,我不使用持久连接。我还具有创建临时表的报告功能。(这可能会占用大量资源,但不会经常发生) 我正在使用CENTOS 6.3和mysql 5.5.28-log 即使我使用交换,性能仍然相当不错。我只是担心,如果我每隔几天不重新启动,就会遇到问题。 这是我大约两天的free -m日志:(第一条记录是在mysql重新启动之后) 12/26 2:08 PM EST total used free shared buffers cached Mem: 992 697 295 0 74 362 -/+ buffers/cache: 260 732 Swap: 976 15 961 12/26 4:10 PM EST [root@php-pos-db ~]# free -m total used free shared buffers cached Mem: 992 …

4
InnoDB插入速度更快
我是与Mondrian OLAP一起研究OLAP的研究生。所以我想在初始加载时更快地将数据插入InnoDB(MySQL 5.5)。在这种环境下,唯一的用户就是我,因此我认为可以允许对插入速度进行更多宽松的设置。目前,我正在使用以下技术。 禁用 log_bin 使能 skip-innodb-doublewrite 设置transaction_isolation为READ-COMMITTED或READ-UNCOMMITTED(实际上READ-COMMITED) 设置innodb_flush_log_at_trx_commit为0或2(实际上0) 设置innodb_buffer_pool_size为5GB(系统具有6GB RAM) 还有其他技术可以在InnoDB上更快地插入吗?而我不得不修改innodb_io_read_thread和innodb_io_write_thread?如果您需要更多信息,请告诉我。


1
InnoDB-在ibdata1文件和ib_logfile0上的高磁盘写I / O
服务器规格:具有以下信息的VPS model name : Intel(R) Xeon(R) CPU E5649 @ 2.53GHz MemTotal: 2058776 kB MemFree: 244436 kB 我们正在运行Invision Power Services的IP.Board,正在使用 innodb_file_per_table并已重新加载数据库以减小ibdata1的大小。但是,尽管ibdata1尺寸减小了,但最近我们仍然遇到CPU和I / O使用率高的问题。 根据我的检查,我认为这是由上较高的I / O使用率引起的ibdata1。以下是我使用pt-ioprofile -cell sizes(在Percona ToolKit中)获得的数据。基本上,这是30秒内收集的I / O总量。 # pt-ioprofile -cell sizes Fri Jul 20 10:22:23 ICT 2012 Tracing process ID 8581 total pread read pwrite fsync open …
8 mysql  innodb 

4
MySQL子查询速度大大降低,但它们独立运行良好
查询1: select distinct email from mybigtable where account_id=345 需要0.1秒 查询2: Select count(*) as total from mybigtable where account_id=123 and email IN (<include all from above result>) 需要0.2秒 查询3: Select count(*) as total from mybigtable where account_id=123 and email IN (select distinct email from mybigtable where account_id=345) 花费22分钟和90%的时间处于“准备”状态。为什么要花这么多时间。 表是在MySQL 5.0上具有320万行的innodb

2
大量插入的InnoDB表不会使用我所有的CPU
我有一个数据包日志数据库,几乎从未查询过。它只需要在插入时快速。我之所以使用InnoDB,是因为我想保持ACID合规性,因为即使丢失单个数据包也可能损害我们的客户。在性能调整方案中,我通过多个数据库连接将1,000,000个数据包发送到服务器。但是,无论我在my.cnf中使用什么设置,我都无法使mysqld进程在具有12个核心的系统上使用超过900%的CPU。(盒子上没有其他东西。) 我设置了以下内容 innodb_file_per_table = 1 innodb_write_io_threads = 64 innodb_read_io_threads = 64 innodb_thread_concurrency = 0 如果使用MyISAM,则可以在大约6秒钟内获得所有写入的数据包。但是InnoDB大约需要25。我可以让MySQL使用其余的系统资源并更快地插入吗? 编辑:这是表的架构: +-------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------------------+------+-----+---------+-------+ | t | bigint(20) unsigned | YES | | NULL | | | a | char(1) | YES | …

2
使用MyISAM和InnoDB引擎的数据库的一致逻辑备份
我对使用MyISAM和InnoDB的MySQL数据库的逻辑备份有疑问。 该mysqldump实用程序支持以下两个选项: --single-transaction-通过在单个事务中转储所有表来创建一致的快照。daccess-ods.un.org daccess-ods.un.org仅适用于存储在支持多版本的存储引擎中的表(当前仅InnoDB支持)。option自动关闭--lock-tables。 -x, --lock -all-tables-锁定所有数据库中的所有表。这可以通过在整个转储期间使用全局读锁定来实现。自动关闭--single-transaction和--lock-tables。 对于InnoDB,我们需要 --single-transaction 对于MyISAM,我们需要-锁定表或全部锁定表(以防需要跨数据库一致性)。 那么,应该如何备份混合数据库(同时使用MyISAM和InnoDB引擎的数据库)? 编辑: 为了澄清起见,可以将问题改写为: lock- [all-] tables选项是否可以保证InnoDB表的一致性备份?

1
InnoDB死锁是INSERT / UPDATE / DELETE专有的吗?
我正在解决MySQL错误“尝试获取锁时发现死锁;尝试重新启动事务”。 我将不得不更新程序以允许死锁。该SELECT语句是否可能产生死锁错误?我知道这只是一个读锁,因此多个选择不会有问题,但是如果存在INSERT,UPDATE或DELETE语句(对于联接可能有子查询)和SELECT语句(对于联接或子查询可能)怎么办? 有没有可能是错误将在被抛出SELECT,而不是INSERT,UPDATE或DELETE。 如果您好奇的话,这里就是故事。

3
优化InnoDB默认设置
我查看了my.ini,并看到了各种默认设置。我的数据库在单个独立PC上运行。我想总体上优化InnoDB和MySQL的性能。磁盘空间没有限制。我应该更改哪些默认设置以优化性能,可靠性和可能的​​时间点备份[高可用性]。 已编辑 目前,每当我通过维护在MySQL Administrator上运行“优化表”时,它就会显示: 表不支持优化,而是执行重新创建+分析 在所有桌子上。我所有的表都是InnoDB,但是为什么它们不支持Optimize?

3
使用MySQL触发器或事务?
我想问一下您在网站上使用MySQL触发器或事务的意见。 实际上,我有一个payment带有- 的历史记录表UserId | OperationId | Comment | Credits | Sign (debit or credit)。因此,每个付款操作都会插入此表中。 但是,计算用户每次执行操作时的总信用额度将非常耗时。因此,我认为将每个用户的总信用额保留在用户profile表中可能是一个好主意。 这是问题所在。如何确定表格中的总贷方金额profile与payment历史记录表格中的操作保持同步? 我认为使用2种方法: MySQL触发器或 源代码中编码的交易 哪个更可靠?如果我有大型数据库(超过100.000个用户)怎么办? 您对此有何建议? BD MySQL引擎是InnoDB。

2
每当phpMyAdmin加载时,在InnoDB上的COUNT(*)
这是一个已知的问题,innodb运行缓慢 SELECT count(*) FROM Table 因此,我避免了这一点。但是我注意到,每当我登录phpmyadmin时,它将自动count(*)为我的具有19k行的innodb表执行a ,这可能需要一分钟的时间来执行。但是,count(*)对于其他具有400万行的innodb表,它不会启动。 在phpmyadmin中,“记录”列下的另一个线索是19k行表的记录数显示了确切的值,而400万行表显示了大约的值。 我了解innodb表可以估算行数。但是似乎对于较小的表(在这种情况下,行数为19k),phpmyadmin决定做一个a,count(*)而不是仅仅给出一个估计。 问题是,有没有办法阻止phpmyadmin在我的innodb表上进行这种计数?每当我刷新phpmyadmin屏幕时,只需给出一个估计值而不用进行昂贵的行计数就可以了。
8 mysql  innodb 

2
将PRIMARY KEY添加到大型InnoDB表的好方法是什么?
在使用InnoDB存储引擎的MySQL 5.5中,我有一个包含约3000万行的表。该表具有一个外键,该外键链接到具有约300万行的另一个表。 我想在较大的表中添加一个主键,但是不确定如何最好地做到这一点。我没有可用于此的现有列(或一组列),那么该如何处理? 我已经看到了一些对内部InnoDB记录ID的引用,但是没有找到它是否可以访问。 否则,也许我将需要转储并重新加载数据,并手动添加ID。 谢谢。
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.