标签: myisam

导致MyISAM腐败的原因是什么?

我听说MyISAM表可能会损坏,哪种行为最有可能破坏它们,以及如何安全地修复所述损坏.

mysql myisam

4
推荐指数
1
解决办法
7062
查看次数

InnoDB和MyISAM有什么区别

InnoDB和MyISAM有什么区别.我能找哪一个?任何提供的区域和其他提供的区域?这两种类型都有技术限制吗?请帮我为我的项目选择合适的类型?

java mysql database myisam innodb

4
推荐指数
1
解决办法
1279
查看次数

只读 MyISAM 表的加速

我们有一个用于存档旧数据的大型 MyISAM 表。这种归档每月执行一次,除了这些情况外,数据永远不会写入表中。无论如何要“告诉” MySQL 该表是只读的,以便 MySQL 可以优化从该表读取的性能?我看过 MEMORY 存储引擎,但问题是这个表太大了,它会占用服务器内存的很大一部分,这是我不想要的。

希望我的问题足够清楚,在数据库管理方面我是新手,因此欢迎任何输入或建议。

mysql performance myisam

4
推荐指数
1
解决办法
3087
查看次数

没有InnoDB的Magento

我正在尝试在我们的服务器上为我的最新项目安装Magento Community Edition,但是,我们当前使用的托管平台没有,也不会让我们安装或使用InnoDB.

是否有人知道可以通过任何其他方式进行任何配置/更改?

mysql myisam innodb magento

4
推荐指数
1
解决办法
4413
查看次数

我们应该在下面的示例中使用"LIMIT子句"吗?


There is a structure:
CREATE TABLE IF NOT EXISTS `categories` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) unsigned NOT NULL DEFAULT '0',
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

Query_1:
SELECT * FROM `categories` WHERE `id` = 1234 
Query_2:
SELECT * FROM `categories` WHERE `id` = 1234 LIMIT 1
Run Code Online (Sandbox Code Playgroud)

我需要得到一排.由于我们应用WHERE id=1234(通过PRIMARY KEY查找)显然id = 1234的行在整个表中只有一行.
MySQL找到该行后,是否引擎在使用Query_1时继续搜索?
提前致谢.

mysql performance myisam limit

4
推荐指数
1
解决办法
65
查看次数

如何从 MySQL 中的连接表中获取孤儿

想象有2个表,第一个是产品(产品)列表,第二个是产品和另一个表(类别)之间的连接表,称为产品类别

产品:

id   |  name
------------
1       Lorem 
2       Ipsum 
3       Dolor 
4       Sit 
Run Code Online (Sandbox Code Playgroud)

产品类别

product_id  | categories_id
---------------------------
1             3
1             6
4             1
2             2
Run Code Online (Sandbox Code Playgroud)

如何获取孤立元素,我的意思是没有类别的元素,所以在这种情况下:3,使用 MyISAM 以有效的方式(+30k 记录)?

这有点像显示所有不可连接的行,但这种语法对我来说很奇怪......

mysql sql myisam

4
推荐指数
2
解决办法
2006
查看次数

移动InnoDb数据库

我有DB InnoDb innodb_db_1。我已经打开了innodb_file_per_table。

如果我去,var/lib/mysql/innodb_db_1/我会找到文件table_name.ibd, table_name.frm, db.opt

现在,我正在尝试将这些文件复制到另一个数据库,例如复制到innodb_db_2var/lib/mysql/innodb_db_2/),但是什么也没有发生。

但是,如果我的数据库是MyIsam,则可以用这种方式进行复制,一切正常。

通过复制InnoDb数据库文件来移动数据库有什么建议?

mysql myisam innodb

4
推荐指数
2
解决办法
7663
查看次数

删除 MYSQL 数据库中的行后需要进行后期优化

我有一个当前为 10GB 的日志表。它有很多过去两年的数据,我真的觉得在这一点上我不需要那么多。我是否错误地认为在表中保存多年的数据不好(较小的表更好)?

我的桌子都有一个 MYISAM 引擎。

我想删除2014年和2015年的所有数据,很快我会删除2016年,但我担心运行DELETE语句后,到底会发生什么。我知道因为它是 ISAM,所以会发生一个无法写入的锁定?我可能会按月删除数据,并在深夜进行,以尽量减少它,因为它是一个生产数据库。

具体来说,我的主要兴趣是:在删除之后我应该采取某种行动吗?我是否需要手动告诉 MYSQL 对我的表做任何事情,或者 MYSQL 会自己做所有的内务管理,回收所有内容,重新索引,并最终在我将删除的 400,000k 记录之后优化我的表。

谢谢大家!

mysql myisam

4
推荐指数
1
解决办法
3757
查看次数

在MyISAM表中克服MySQL限制为2 ^ 32行

我想在MySQL中创建一个MyISAM表(尝试了各种版本的5.0.x和5.1.x),允许超过2 ^ 32行.实现这一目标的方法是让MySQL使用8字节而不是4字节的行指针.

以下是MySQL手册的引用:

如果使用--with-big-tables选项构建MySQL,则行限制将增加到1.844E + 19行.请参见第2.3.2节"典型配置选项".Unix和Linux的二进制发行版使用此选项构建.

听起来很简单吧?但是我已经为Linux x86_64尝试了各种二进制发行版,并且还使用"--with-big-tables"选项从源代码构建MySQL.在每种情况下,我仍然无法超越2 ^ 32的限制.我这样创建一个表:

CREATE TABLE big (col int) MAX_ROWS=1099511627776

当我检查表状态时,它说:

Create_options: max_rows=4294967295

我如何逃脱32位炼狱?使用InnoDB可能会解决问题,但对于我正在运行的查询类型,它的执行速度要慢得多.

仅供参考,这是一个没有解决问题的重要参考:

http://jeremy.zawodny.com/blog/archives/000796.html

mysql myisam

3
推荐指数
1
解决办法
2345
查看次数

MySQL事务是原子的吗?

我已经读过MySQL(InnoDB)中的事务是原子的,但是当我在5个线程中测试下一个代码时,它们会选择相同的ID:

$db->beginTransaction();

$row = $db->fetchRow("SELECT * FROM atomic WHERE selected = 0 LIMIT 1");

sleep(5);

$db->update("atomic", array('selected' => 1), "id = " . $row['id']);

$db->commit();

echo "Selected row: " . $row['id'];
Run Code Online (Sandbox Code Playgroud)

php mysql myisam innodb transactions

3
推荐指数
1
解决办法
2362
查看次数

标签 统计

myisam ×10

mysql ×10

innodb ×4

performance ×2

database ×1

java ×1

limit ×1

magento ×1

php ×1

sql ×1

transactions ×1