在MySQL手册的MySQL涵盖这一点.
通常我只是转储数据库并使用新名称重新导入它.对于非常大的数据库,这不是一个选项.显然RENAME {DATABASE | SCHEMA} db_name TO new_db_name; 做坏事,只存在于少数几个版本中,并且整体上是一个坏主意.
我正在研究涉及大量数据库写入的项目,我会说(70%的插入和30%的读取).该比率还包括我认为是一次读取和一次写入的更新.读取可能很脏(例如,在读取时我不需要100%准确的信息).
有问题的任务将是每小时进行超过100万次数据库事务.
我在网上看到了一些关于MyISAM和InnoDB之间差异的东西,对于我将用于此任务的特定数据库/表格来说,MyISAM似乎是我的明显选择.从我似乎正在阅读的内容来看,如果需要事务处理,InnoDB很好,因为支持行级锁定.
有没有人有这种负载(或更高)的经验?MyISAM是走的路吗?
我在localhost中使用MySQL作为在R中执行统计的"查询工具",也就是说,每次运行R脚本时,我创建一个新数据库(A),创建一个新表(B),将数据导入B ,提交查询以获得我需要的内容,然后我删除B并删除A.
它对我来说很好,但我意识到ibdata文件大小正在迅速增加,我在MySQL中没有存储任何内容,但ibdata1文件已超过100 MB.
我使用或多或少的默认MySQL设置进行设置,有没有办法可以在一段固定的时间后自动缩小/清除ibdata1文件?
在MySQL中,如何获取指向特定表的所有外键约束的列表?一个特定的专栏?这与Oracle问题相同,但对MySQL而言.
我的MySQL数据库包含几个使用不同存储引擎的表(特别是myisam和innodb).如何找出哪个表使用哪个引擎?
是否有一种很简单的方法可以从MySQL数据库中删除所有表,忽略可能存在的任何外键约束?
在我的生产错误日志中,我偶尔会看到:
SQLSTATE [HY000]:常规错误:1205超出锁定等待超时; 尝试重新启动事务
我知道当时哪个查询正在尝试访问数据库,但有没有办法找出哪个查询在那个精确时刻有锁定?
我知道之前已经问过这个问题,但大部分时间都会询问与特定数据库或表格有关的问题.我无法在这个网站上找到描述两个引擎及其差异的答案,而不考虑某些特定数据库.
我希望将来能够在设计表或数据库时做出更明智的决策,所以我正在寻找关于两个存储引擎之间差异的全面答案.
我知道我可以单独发出一个alter table来将表存储从MyISAM更改为InnoDB.
我想知道是否有办法快速将所有这些更改为InnoDB?
innodb ×10
mysql ×10
database ×4
myisam ×3
foreign-keys ×2
acid ×1
debugging ×1
performance ×1
rename ×1
sql ×1
sql-drop ×1
transactions ×1