草庐IT

mysql - 在使用 MyISAM 的 MySQL 中的 REPAIR TABLE 期间什么会导致数据丢失?

REPAIRTABLE的MySQL文档指出Itisbesttomakeabackupofatablebeforeperformingatablerepairoperation;undersomecircumstancestheoperationmightcausedataloss.Possiblecausesincludebutarenotlimitedtofilesystemerrors.我想知道除了文件系统错误之外是否还有其他原因导致数据丢失。有人在野外见过这种情况吗?如果没有文件系统错误,修复丢失数据的可能性有多大?我的具体情况如下。我有运行Solaris10(SPARC)的Su

MySQL MyISAM 数据丢失的可能性?

许多站点和脚本仍然使用MySQL而不是PostgreSQL。我有几个低优先级的博客,所以我不想迁移到另一个数据库,所以我使用的是MySQL。这就是问题所在,它们位于低内存VPS上。这意味着我无法启用InnoDB,因为它仅用于加载就使用了大约80MB的内存。所以我不得不冒险运行MyISAM。考虑到这一点,我在使用MyISAM时会看到什么样的数据丢失?如果有人在保存博客文章时发生断电,我会丢失那篇文章,还是整个数据库?在这些低端机器上,只要不丢失整个数据库,我可以接受丢失一些最近的评论或博客文章。 最佳答案 MyISAM不符合ACID,

mysql - 将 MySQL 表和数据从存储引擎 MyISAM 移动到 InnoDB

这个问题可能是针对以前进行过此类迁移的MySQL专家和管理员的。我在MyISAM存储引擎上有17个MySQL表、触发器和存储过程。这些表总共有大约8MiB的数据。由于我正在将应用程序和数据库迁移到AmazonEC2和RDS,所以我想知道将表从MyISAM迁移到InnoDB时需要考虑哪些关键因素。我将要完成的步骤大致如下。AWSRDS上的系统表必须位于MyISAM上,因此没有争议。创建17个与MyISAM上存在的结构相同的表,并在RDSInnoDB中构建它们。从MyISAM表中导出数据并将它们导入到在InnoDB上的RDS中创建的新表中。在InnoDB数据库中创建触发器、存储过程和函数。

MySQL GROUP BY 优化 - InnoDB 与 MyISAM?

问题有谁知道为什么没有对基于MyISAM的表进行GROUPBY优化?(我使用的是这个版本:5.1.49-3)测试表CREATETABLE`_test2_innodb`(`i`int(10)unsignedNOTNULLAUTO_INCREMENT,`n`smallint(5)unsignedNOTNULL,`t`int(10)unsignedNOTNULL,`v`smallint(6)NOTNULL,PRIMARYKEY(`i`),KEY`i_n`(`n`),KEY`i_t`(`t`))ENGINE=InnoDBDEFAULTCHARSET=latin1CREATETABLE`_tes

mysql - 将大型 MyISAM 表转换为 InnoDB

我有一个MyISAM表(10M行,3.5G,计划达到~80M),但我总是无法将其转换为InnoDB。我试过了:ALTERTABLE-2分钟后失去连接。也许我做错了。mysqldump-尝试创建转储,然后将ENGINE=MyISAM更改为ENGINE=InnoDB。它开始时很好,但是随着新表中行数的增加(~3M),它变得越来越慢,最后在几个小时后超时(--reconnect开启)。如果我将缓冲池大小增加到2G,它会在更多行(~6M)后变慢,但机器会耗尽RAM。在转储恢复期间,在SHOWPROCESSLIST中,我看到许多查询在“查询结束”状态下停留了2-3分钟。无法通过google理解这

mysql - 生成一个 150M 行的海量 MySQL 表

我有一个C程序,它挖掘一个巨大的数据源(20GB的原始文本)并生成大量INSERT以在简单的空白表(4个整数列和1个主键)上执行。设置为MEMORY表,整个任务在8小时内完成。完成后,表中存在大约1.5亿行。八小时对我来说是一个完全体面的数字。这是一次性交易。当尝试将MEMORY表转换回MyISAM时出现问题,以便(A)我将为其他进程释放内存,并且(B)当我重新启动计算机时,数据不会被杀死。ALTERTABLEmemtableENGINE=MyISAM我已经让这个ALTERTABLE查询运行了两天多了,但还没有完成。我现在已经杀了它。如果我最初将表创建为MyISAM,写入速度似乎非常差

mysql - 当索引不适合 key_buffer 时快速 MySQL 批量加载

这里有一个关于如何正确配置mysql(myisam)以快速执行批量插入(加载数据infile)的问题。有6Gb的文本文件要导入,1500万行,16列(一些int,一些varchar(255),一个varchar(40),一个char(1)一些日期时间,一个mediumtext)。相对my.conf设置:key_buffer=800Mmax_allowed_packet=160Mthread_cache_size=80myisam_sort_buffer_size=400Mbulk_insert_buffer_size=400Mdelay_key_write=ONdelayed_inse

mysql - 是否规范化数据库?只读 MyISAM 表,性能是主要优先级(MySQL)

我正在将数据导入到future的数据库中,该数据库将包含一个静态MyISAM表(只能从中读取)。我选择MyISAM是因为据我所知,它可以更快地满足我的要求(我对MySQL/SQL一点经验都没有)。该表将包含各种列,例如ID、姓名、性别、电话、状态...以及国家/地区、城市、街道列。现在的问题是,我应该为最后3列创建表(例如Country:Country_ID、Country_Name)并通过ID在主表中引用它们(规范化...[?]),还是将它们作为VARCHAR存储在主表(显然有重复)?我主要关心的是速度——因为不会写入表,所以数据完整性不是优先事项。唯一的操作是选择特定行或搜索符合特

php - PHP/MySQL 应用程序声明外键是一种常见的做法吗?

我正在开发一个开源PHP/MySQL应用程序我查看了phpBB、Wordpress和其他应用程序,看看它们是否指定了外键(以确保参照完整性)我找不到他们有在这些类型的应用程序中,在MySQL数据库结构中指定外键是一种常见的做法吗? 最佳答案 MySQL以往版本默认使用MyISAM存储引擎,不支持外键约束。除非您显式声明表使用InnoDB存储引擎,或者更改服务器范围内的默认存储引擎,否则不会出现外键,并且为MySQL设计的软件开发人员不会费心使用外键约束也就不足为奇了。MySQL5.5目前处于测试阶段,最终InnoDB将成为默认的存储

MySQL InnoDB 查询性能

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