草庐IT

innodb-performance-optimization

全部标签

mysql - NULL 对 MySQL 表有什么影响? (InnoDB)

最近,我一直在思考是否值得拥有一个可能包含大量NULL列的表,或者拥有更多没有NULL列的表是否更好。我听说NULL没有存储在InnoDB上,所以我想知道一堆带有大量NULL的行是否有任何缺点或问题。我一直听说常见的NULL不好,但我从未真正了解为什么。顺便说一句,如果这很重要的话,外键上的那些将是NULL。第二个疑问,当我在具有大量NULL的列上使用INNERJOIN时,是否存在任何性能问题?比如,如果我有4个外键,我打算进行4个INNERJOIN,但很可能只有1个不是NULL,这会影响性能吗?谢谢 最佳答案 参见:Doesmys

sql - 从 mysql innodb 中删除大量数据

我需要删除生产数据库中的大量数据,该数据库的大小约为100GB。如果可能的话,我想尽量减少停机时间。我删除的选择标准很可能是DELETE*FROMPOSTINGWHEREUSER.ID=5ANDUPDATED_AT删除它的最佳方法是什么?建立索引?编写一个顺序脚本,通过分页一次删除1000行? 最佳答案 可以尝试使用mysqldoc中提到的方法:选择不删除的行到一个与原表结构相同的空表中:INSERTINTOt_copySELECT*FROMtWHERE...;使用RENAMETABLE以原子方式将原始表移开并将副本重命名为原始名称

mysql - MySQL 问题 - InnoDB : Operating system error number 2 in a file operation

我正在本地开发并使用MampPro。基本上MySQL无法启动,这是错误日志中的错误消息:知道如何解决这个问题吗?2017-03-0200:39:089518[Note]Plugin'FEDERATED'isdisabled.2017-03-0200:39:089518[Note]InnoDB:Usingatomicstorefcountbufferpoolpages2017-03-0200:39:089518[Note]InnoDB:TheInnoDBmemoryheapisdisabled2017-03-0200:39:089518[Note]InnoDB:Mutexesandrw_

mysql 更改 innodb_large_prefix

我只是在虚拟机上安装了debian8.3并在此之后安装了xamppTutorial.一切正常,直到我尝试创建一个新表:createtabletesttable(idint(10)notnullauto_increment,firstnamevarchar(255)collateutf8mb4_german2_cinotnull,lastnamevarchar(255)collateutf8mb4_german2_cinotnull,primarykey(id),uniquekey(lastname))engine=innodbdefaultcharset=utf8mb4,collate

mysql - 将表类型更改为 InnoDB

我有一个myisam只有专用的32GBRAMmysql服务器,它在默认配置下运行。为了避免表锁,我想将引擎类型更改为一张表的InnoDB。它有5000万条记录,磁盘大小约为15GB。我正在使用mysql5.5版我想我需要添加以下选项并重新启动mysql。innodb_buffer_pool_size=1Ginnodb_log_file_size=100Minnodb_file_per_table=1在改变引擎类型时,还有什么被认为是必要的? 最佳答案 您实际上将运行一个命令来转换每个表。首先对表格进行排序会更快:ALTERTABLE

mysql - 如何修复 "InnoDB: Failed to find tablespace for table X in the cache. Attempting to load the tablespace with space"

Mysql不工作,我得到以下错误:[ERROR]InnoDB:Failedtofindtablespacefortable'"database"."table"'inthecache.Attemptingtoloadthetablespacewithspaceid1290. 最佳答案 我今天在将数据目录从一台服务器复制到另一台服务器时遇到了类似的问题,我要发布的答案可能不是直接的。我错误地在我的配置文件中添加了innodb_force_recovery选项,这就是错误的原因,innodb_force_recovery值被设置为5。删

mysql - 如何使用外键禁用 InnoDB 的 MySQL 注释?

一段时间以来,我注意到MySQL会将注释附加到定义了外键的InnoDB表中。它看起来像这样:InnoDBfree:0kB;(event_id)REFERevents(event_id)ONU...为了正确显示我的表描述,我必须解析字符串并用分号分隔它。一般情况下这没什么大不了的,但是在数据库GUI中一直看到此消息非常烦人。我通过stackoverflow找到了thisquestion这对我来说不是很方便,所以我在徘徊是否可以禁用此行为/错误?更新:托管提供商服务器上安装的MySQL版本为5.0.77 最佳答案 我在MySQL官方论坛

MySQL InnoDB 大表 : to shard or to add more RAM?

friend们,我是一款社交游戏的开发者,游戏中已经有70万玩家,每天大约有7000名新玩家注册,大约有5000名玩家不断在线。数据库服务器运行在一个非常强大的硬件上:16核CPU、24GbRAM、RAID-10和BBU构建在4个SAS磁盘上。我正在使用Percona服务器(已打补丁的MySQL-5.1),目前InnoDB缓冲池为18Gb(尽管根据innotop只有几个可用缓冲区可用)。数据库服务器运行良好(2kQPS,iostat%util为10-15%,vmstat中“b”状态几乎总是0个进程,loadavg为5-6)。但是,有时(每隔几分钟)我会收到大约10-100个缓慢的查询(

mysql - 以最少的停机时间更改 MySQL InnoDB 表

我有一个巨大的InnoDB表(>5亿行),我想按散列对其进行分区以减小索引大小。我想以最短的停机时间(例如10分钟是可以接受的)实现这一目标,有哪些可能的选择?我在想下面的事情:创建新的分区表使用“insert...select...”将旧表中的所有数据插入到这个新表中使服务器对客户端不可用以某种方式将第2步中旧表发生的更改同步到新表用新表替换旧表为客户提供服务器主要问题是在第4步中可以使用什么工具。问题是在第2步中可能会对原始表进行大量更改:新插入、更新、删除-同步工具应该处理所有这些考虑到...我认为,另一种可能的方式是:设置一个复制从属服务器将此从属服务器与主服务器同步切换主从角

MySQL:如果我打算在营利性环境(商业用途)中使用它,我是否必须购买 InnoDB 的许可证?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎与helpcenter中定义的范围内的编程无关。.关闭7年前。Improvethisquestion如果我计划在一个Web开发项目(example.com)中使用MySQL,其中我的Web应用程序是一个商业产品,我在其中销售一项服务,而使用InnoDB引擎的MySQL恰好是我的Web应用程序的后端数据存储...我必须购买商业许可证才能使用MySQL/InnoDB吗?如果我必须购买商业许可证,谁能推荐一个很好的免费MySQL替代品(无附加条件)。谢谢