最近我们的一项讨论提到,使用基于 MyISAM 的旧 MySQL 部署来移动旧的遗留系统不能轻易地被基于 InnoDB 的 MySQL 或 MariaDB 部署所取代。出现的原因是到处都是 MyISAM 纯 SQL 命令。我还没有看到代码,所以我想知道他们指的是什么 SQL 命令。
我只知道下面的几个与表锁定相关联。它可能仍然在理论上与 InnoDB 一起工作,但更适合支持表锁定的 MyISAM 、MERGE 和 MEMORY 存储引擎。
LOCK TABLES
UNLOCK TABLES
如果还有更多,或指向我的集合。我们将不胜感激。
--编辑--
我会把我找到的所有其他东西都放在这一行下面。
MATCH (http://dev.mysql.com/doc/refman/5.5/en//fulltext-search.html)
最佳答案
您也可以为 InnoDB 表LOCK TABLES,所以这不是 MyISAM 特定的。虽然没有必要锁定 InnoDB 表。最好使用事务、MVCC 和 SELECT...FOR UPDATE。
有许多配置变量和状态变量仅与 MyISAM 相关,例如 key_buffer_size 将一些内存专用于缓存索引。但这些不是命令。
InnoDB 不支持 MyISAM 表的一些特性。一种是分组自增主键:
CREATE TABLE foo (
group_id INT,
position INT AUTO_INCREMENT,
PRIMARY KEY (group_id, position)
);
上表在您插入行时递增 position,但 group_id 的每个不同值都从 1 开始。这仅适用于 MyISAM。
CREATE FULLTEXT INDEX,因此 MATCH()...AGAINST() 查询谓词目前仅在 MyISAM 中受支持。但是这些正在为 MySQL 5.6 中的 InnoDB 实现。
CREATE SPATIAL INDEX 仅在 MyISAM 中受支持。
CHECKSUM TABLE 仅适用于 MyISAM 表。
OPTIMIZE TABLE 在某些方面特定于 MyISAM,但是当您对 InnoDB 表运行此命令时,它会自动转换为重新创建 + 分析操作。
CREATE TABLE 仅 MyISAM 支持的选项:
MERGE 存储引擎只能合并 MyISAM 表。
我最喜欢应用于 MyISAM 表的命令如下。 :-)
ALTER TABLE tablename ENGINE=InnoDB;
关于mysql - 仅适用于 MyIsam 存储引擎的最常见和最重要的 SQL 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13413226/
如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
当我使用has_one时,它工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290
我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
我正在编写一个简单的静态Rack应用程序。查看下面的config.ru代码:useRack::Static,:urls=>["/elements","/img","/pages","/users","/css","/js"],:root=>"archive"map'/'dorunProc.new{|env|[200,{'Content-Type'=>'text/html','Cache-Control'=>'public,max-age=6400'},File.open('archive/splash.html',File::RDONLY)]}endmap'/pages/search.