草庐IT

innodb_flush_method

全部标签

mysql - 对具有 3 亿行和每秒 50-100 个查询的 MySQL innoDB 表的查询随机减慢

我有一个MySQL数据库,其中有一个包含大约3亿行的InnoDB表。最多有10个连接的客户端每秒发送50-60个读取查询。几个月来一切都很顺利,直到最近,MySQL开始停滞,同时使用大量CPU(100%+。uptime命令显示值如15、12、15。)。需要500毫秒的查询现在需要几秒,从几十秒到几百秒。执行SHOWPROCESSLIST显示查询卡在Sendingdata状态。我无法弄清楚原因,感谢任何帮助。服务器英特尔(R)至强(R)CPUE5@2.40GHz|12个中央处理器|32GB内存我的.cnfinnodb_file_per_table=1tmp-table-size=32Mm

mysql - 什么是 MySQL InnoDB 意向锁?

我已经阅读了关于意向锁的MySQL手册:http://dev.mysql.com/doc/refman/5.5/en/innodb-locking.html#innodb-intention-locks它说“使多粒度级别的锁定变得实用”,但是怎么做呢?它没有告诉我们这件事。谁能给个详细的解释和例子? 最佳答案 将InnoDB数据空间视为数据库的集合,每个数据库都是表的集合,每个表都是行的集合。这形成了一个层次结构,其中越来越低的级别提供越来越多的粒度。现在,当你想在事务中更新这棵树的某些部分时,你该怎么做?那么,InnoDB雇用了​

MySQL InnoDB 查询性能

我正在尝试优化一个简单的sql查询,该查询将多次运行大量数据。这是场景:带有InnoDB表的MySQLwhere和join中使用的所有字段都已编入索引。表格有FK。我不需要查询的整个缓存,但可能需要每个表的缓存。表格有更多更新/插入的读取。一个真正的查询:SELECTone_field,another_fieldFROMbig_tableINNERJOINmedium_tableON(...)INNERJOINsmall_tableON(...)WHEREweek>=#numberANDweek=#numberANDyear部分测试结果:平均查询时间:2,3374秒测试表包含真实表数据

php - NOW() for DATETIME InnoDB Transaction guaranteed?

在单个InnoDB事务的2+个查询中使用NOW()是否保证插入的日期时间值在数据库中是准确的?换句话说,即使您在使用它的单个事务中有超过20个查询,NOW()是否总是相同,还是会改变? 最佳答案 Apparentlyitisnotguaranteed跨事务但可以从语句更改为语句。有一个解决方法可以使用asshownhere:BEGIN;SELECT@now:=NOW();INSERT...VALUES(...,@now,...);INSERT...VALUES(...,@now,...);UPDATE...@now...;COMMI

mysql - InnoDB 优化 - "use transactions when doing updates"- 为什么?

我正在阅读thispost在MySQL性能博客上。在应用程序调整下它说:Firstmakesureyou’reusingtransactionswhendoingupdates我目前只在同时有多个插入或更新的地方使用事务。即不止一张table。因此,我是否应该更改每个UPDATE以将其更改为事务?有什么区别:preparesqlbindparamscommit和:begintransactionpreparesqlbindparamsexecutestatementcommittransaction就数据库级别发生的事情而言,这使得一个比另一个更快? 最佳答

mysql - 处理 ON INSERT 触发器时如何锁定 innodb 表?

我有两个innodb表:文章id|title|sum_votes------------------------------1|art1|52|art2|83|art3|35投票id|article_id|vote------------------------------1|1|12|1|23|1|24|2|105|2|-26|3|107|3|158|3|129|3|-2当一条新记录插入到votes表中时,我想更新articles表中的sum_votes字段,方法是计算所有投票。问题如果SUM()计算本身很重(votes表有700K条记录),哪种方式更有效。1。创建触发器CREATE

mysql - 如何为仅包含 ibdata 和 *.ibd 文件的 MySQL InnoDB 表重新创建 FRM 文件?

这个问题与我在stackoverflow上看到的相关InnoDB修复问题略有不同。假设我已经使用innodb_file_per_table=1在我的MySQL5.1数据库中恢复了以下内容:db/tablename.ibdinnodb/ibdata1innodb/ib_logfile0innodb/ib_logfile1我丢失了db/tablename.frm文件。我可以启动数据库服务器,但InnoDB提示:11072313:26:33InnoDB:Error:table'db/tablename'InnoDB:inInnoDBdatadictionaryhastablespaceid5

mysql - 自增组合键 InnoDB

我想为InnoDBMySQL表创建类似MyISAM的行为。我想要一个复合主键:主键(id1,id2)其中id1根据id2的值自动递增。使用InnoDB实现此目的的最佳方法是什么?+----------+-------------+--------------+|id1|id2|other_column|+----------+-------------+--------------+|1|1|Foo||1|2|Bar||1|3|Bam||2|1|Baz||2|2|Zam||3|1|Zoo|+----------+-------------+--------------+

mysql - InnoDB 行大小在表增长时呈指数变化?

我有一个包含三列(int、mediumint、int)的巨大InnoDB表。innodb_file_per_table设置开启,前两列只有一个PRIMARYKEY表架构是:CREATETABLE`big_table`(`user_id`int(10)unsignedNOTNULL,`another_id`mediumint(8)unsignedNOTNULL,`timestamp`int(10)unsignedNOTNULL,PRIMARYKEY(`user_id`,`another_id`))ENGINE=InnoDBDEFAULTCHARSET=utf8COLLATE=utf8_u

mysql - 如何修复 InnoDB 损坏,从创建中锁定表名(errno : -1) on AWS RDS?

提示:不要在MySQLWorkbench中为“标准TCP/IPoverSSH”连接运行ALTER语句。最好进入服务器并从那里运行ALTER。这样,如果您失去与服务器的连接,ALTER仍应完成其工作。我正在尝试在我昨天尝试创建的数据库中创建一个新表。问题是,我的互联网一直在微辍学中失去连接。我相信这些故障之一是在我创建表时发生的,现在当我尝试创建一个具有完全相同的名称的表时:CREATETABLEIFNOTEXISTS`adstudio`.`data_feed_param`(`id`BIGINTUNSIGNEDNOTNULLAUTO_INCREMENT,PRIMARYKEY(`id`))