草庐IT

innodb-performance-optimization

全部标签

mysql - 什么时候将表从 MyISAM 更改为 InnoDb?

这个问题就像我之前问题的延续:AmIrightthatInnoDbisbetterforfrequentconcurrentupdatesandinsertsthanMyISAM?但这次我有具体的问题。我们知道,当我们没有很多并发更新(插入)时,MyISAM比InnoDb更快。当我们有很多并发更新时,MyISAM表被锁定,所有其他客户端都应该等待。1)但是什么时候从MyISAM更改为InnoDb?每秒更新1次?每秒更新10次?每秒更新100次?2)对于一个具体的例子,将我网站上的一张表更改为InnoDb会更好吗?我通常每分钟更新几次(来自不同的session),但有时每秒更新约2-3次

InnoDB 与 MyISAM 中的 MySQL 原子更新

无论引擎如何(例如InnoDB或MyISAM),这个“比较和交换”语句总是原子的吗?:UPDATEtbl_nameSETlocked=1WHEREid=IDANDlocked1;我问这个是因为我打算使用此语句来执行与事务和非事务数据库表兼容的伪行级锁定。这是recommendedforMyISAM的方法,但我不确定这是否适用于InnoDB,因为文档建议改用事务。 最佳答案 是的。在InnoDB中,行将被锁定(让你在id上有一个唯一索引,更新锁定它必须扫描的所有行),更新并释放锁。如果您不在显式事务中/自动提交处于打开状态,则每个语句

mysql - 数据库(MySql)与引擎(InnoDB)的关系?

有1000万篇文章将MyISAM与InnoDB(两个所谓的数据库引擎)进行比较,Wikipedia含糊地定义为:"...theunderlyingsoftwarecomponentthatadatabasemanagementsystem(DBMS)usestocreate,read,updateanddelete(CRUD)datafromadatabase."但这到底是什么意思呢?令人惊讶的是,我找不到一篇文章讨论数据库与其引擎的关系!引擎如何在具体的现实世界中表现出来?数据库真的只是一个二进制文件,而它的“引擎”是处理所有进出文件的I/O的.exe吗?引擎是否处理EXPLAIN和

MySQL InnoDB 在 SELECT 上使用排他锁死锁(用于更新)

我这样做是为了确保这个进程的实例只运行一次(伪代码php/mysqlinnodb):STARTTRANSACTION$rpid=SELECT`value`FROMlocksWHEREname="lock_name"FORUPDATE$pid=posix_getpid();if($rpid>0){$isRunning=posix_kill($rpid,0);if(!$isRunning){//isRunningINSERTINTOlocksvalues('lock_name',$pid)ONDUPLICATEKEYUPDATE`value`=VALUES(`value`)}else{RO

mysql - InnoDB 表存在于 MySQL 中,但在将数据库复制到新服务器后表示它们不存在

我使用mysqldump导出了我的数据库,然后将其导入到我另一台服务器上的MySQL中。如果我“显示表格”,我现在可以看到我的所有表格,但实际上我无法从中选择或描述任何表格。ERROR1146(42S02):Table'mydatabase.user'doesn'texist我所有的表都是InnoDB。我看到人们在使用old_passwords时遇到的一个问题,所以我在my.cnf中明确地将其设置为0,并且我确保mysql表中的所有密码都是41位十六进制数字,因为它们应该用于新密码。 最佳答案 “显示表格”的原因;有效是因为mysq

与 MYISAM 相比,在插入期间使用 InnoDB 的 mysql 速度较慢

我刚刚安装了具有InnoDB默认引擎的MySQL5.5,并且发现INSERT查询真的很慢!禁用general-log后它变得好一点但仍然很慢。我分析mysql以找到问题但没有机会。这是比较这个的基准:使用500行测试一个(n)MYISAM表。-每秒5866次插入。-每秒128866行读取。-每秒56306次更新。使用500行测试一个(n)个INNODB表。-每秒9次插入。-每秒28539行读取。-每秒4358次更新。我在InnoDB上有9个插入查询,而在MyISAM上有5866个。这是我的my.ini(Windows864位):[mysql]default-character-set=

mysql - 在读取速度和写入速度方面,InnoDB 与 MyISAM 的比较是否仍然适用?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我知道有abunchofotherquestions对此。我遇到的问题是找到关于存储引擎最新版本的最新共识。有人说MyISAM的读取速度更快,但InnoDB的“最近”改进减轻或消除了这种差异。是这样吗?Thisarticle在MYSQLPerformanceBlog上有很多链接,既有直接链接,也有链接到此处问题的其他文章,但它已有3年历史了。我们是开发人

mysql - 在 mysql : Performance comparison between various methods for Date 中存储日期

现在我想到了三个选项。1st->四列(日、月、年、日)=>28,03,2011,1我可以轻松地搜索和修改这些列,而无需额外学习mysql日期。2nd->一个日期列(dd-mm-yyyy)=>28-03-2011这只需要一列,更易于管理,因为只有一个WHERE参数用于搜索日期。但我不知道如何搜索某一天的所有记录。假设过去所有星期一的所有数据或所有28日的所有数据。3rd->两列(今天日期的unix时间戳)=>1827328721,1现在,在这里我可以将数据存储为时间戳,并通过简单地获取日期然后将其转换为unix时间戳然后在sql中使用它来轻松地进行搜索和比较。对于day,我可以使用day

mysql - 使用 InnoDB 将表转换为 MyISAM 的最安全方法是什么?

我的数据库目前正在使用InnoDB引擎。现在我想添加全文搜索功能,这就是我想将我的表转换为MyISAM的原因。但是这样做会破坏所有外键。如何安全地将表引擎更改为MyISAM?将表更改为MyISAM引擎后如何使用SELECT...JOIN?ALTERTABLEjobsENGINE=MyISAM;Cannotdeleteorupdateaparentrow:aforeignkeyconstraintfails 最佳答案 我建议您转储数据库,将该文件中的所有文本从InnoDB更改为MyISAM,然后加载修改后的文件

SQL 查询 : inner joins optimization between big tables

我在MySQL4.x数据库中有以下3个表:主机:(300.000条记录)id(UNSIGNEDINT)主键姓名(VARCHAR100)路径:(6.000.000条记录)id(UNSIGNEDINT)主键姓名(VARCHAR100)网址:(7.000.000条记录)host(UNSIGNEDINT)PRIMARYKEYpath(UNSIGNEDINT)PRIMARYKEY如您所见,架构非常简单,但问题在于这些表中的数据量。这是我正在运行的查询:SELECTCONCAT(H.name,P.name)FROMhostsASHINNERJOINurlsasUONH.id=U.hostINNER