标签: myisam

InnoDB排序真的很慢吗?

我在myISAM中拥有了所有表,但是当我长时间运行更新作业时,表级锁定开始杀了我.我将我的主表转换为InnoDB,现在我的许多查询都需要花费1分钟才能完成,这些查询几乎是在myISAM上完成的.他们通常陷入困境Sorting result.我做错什么了吗?

例如 :

SELECT * FROM `metaward_achiever` 
 INNER JOIN `metaward_alias` ON (`metaward_achiever`.`alias_id` = `metaward_alias`.`id`) 
 WHERE `metaward_achiever`.`award_id` = 1507  
 ORDER BY `metaward_achiever`.`modified` DESC 
 LIMIT 100  
Run Code Online (Sandbox Code Playgroud)

现在大约需要90秒.这是描述:

+----+-------------+-------------------+--------+-------------------------------------------------------+----------------------------+---------+---------------------------------+-------+-----------------------------+
| id | select_type | table             | type   | possible_keys                                         | key                        | key_len | ref                             | rows  | Extra                       |
+----+-------------+-------------------+--------+-------------------------------------------------------+----------------------------+---------+---------------------------------+-------+-----------------------------+
|  1 | SIMPLE      | metaward_achiever | ref    | metaward_achiever_award_id,metaward_achiever_alias_id | metaward_achiever_award_id | 4       | const                           | 66424 | Using where; Using filesort | 
|  1 | SIMPLE      | …
Run Code Online (Sandbox Code Playgroud)

mysql sql database myisam innodb

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

当我们构建集群存储时,MyISAM引擎比InnoDB更优选吗?为什么会这样?

今天我在java开发人员的采访中听到这个.我必须列出MyISAM相对于InnoDB的一些优点以及为什么它仍然被广泛使用.他们正在等待我的回答作为这个问题的标题.

我从他们自己的答案中了解到:MyISAM没有外键,DB可以轻松集群(例如每个服务器一个表).但是为什么我们不能简单地创建没有外键的InnoDB表?这个解释听起来很奇怪..

mysql myisam innodb database-cluster

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

MySQL备份:我可以将单个MyISAM表文件复制到具有不同MySQL版本和不同操作系统的另一台服务器吗?

我的意思是复制单个MyISAM表文件是:(
关闭mysqld并将.frm,.myd和.myi文件从一个数据库文件夹复制到另一个数据库文件夹)


问题:
(a)我可以用这种方式从一个数据库备份MySQL数据库文件夹服务器到不同MySQL版本的另一台服务器?

(b)这个备份文件可以移动到不同的操作系统吗?(例如:debian到centos)

mysql linux backup myisam

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

webhost不支持InnoDB.现在怎么办?

我正在我的笔记本电脑上开发一个小型WAMP Web应用程序,我在其中运行了mySQL实例,并为数据库引擎选择了InnoDB.经过几个星期的开发,我想向公众开放,发现我的网站主机提供的数据库服务器不支持InnoDB,只支持MyISAM.

从我的笔记本电脑上的innoDB架构生成的create-and-populate脚本,当针对实时数据库执行时,可以设法创建单独的TABLES,但后来遇到创建VIEW的问题.MyISAM不支持视图吗?我知道FOREIGN KEYs不是.这就是为什么我选择了InnoDB的原因...我有什么机会让我的innoDB架构设计与myISAM一起工作?

有没有直接的方法将整个架构从一个存储引擎转换到另一个?我应该寻找另一个提供支持innoDB的mysql数据库的Web主机吗?

mysql myisam innodb web-hosting views

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

myisam表类型对于日志表(mysql)真的更好吗?

我一直在阅读是否使用myisam或innodb作为日志表(大量写入,很少读取).虽然有些人说myisam总体上更快,资源更少,但其他人说myisam实际上是更糟糕的选择,因为它只有表级锁定.

有没有人有这种情况的实际经验并且小心分享他们的建议?

提前致谢

mysql database-design myisam innodb

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

将MyISAM密钥插入INNODB表

我正在使用这个表结构来表示像TAGs系统这样的"toxi"

table TAGS

+--------+-------------------+
| alias  | isactive          |  varchar(55), tinyint(1)
+--------+-------------------+
| party  | 1                 |

Engine: MyISAM (because I use some 'autocomplete' using this table (field:alias) for 
a %xxx% search

table TAGREL

+-------------+-------------------+
| tags_alias  | productID         |  varchar(55), int(11)
+-------------+-------------------+
|   party     | 15                |

Engine: InnoDB (i dont need full search here)
This TAGREL table uses tags.alias as FK (on update cascade, on delete cascade)  and 
product id as FK (on update no action, on delete …
Run Code Online (Sandbox Code Playgroud)

mysql tags myisam innodb

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

MySQL存储引擎用于大型日志表

(我已经看到了这个问题,但是对于我想问的问题,它并不具体.)

我正在设置一个大型(大约100 GB)的日志表,平均记录大小为100-200字节和几个索引(索引?).插入率约为每秒100-200条记录.我将在此表上运行分析查询,可能并非所有这些查询都会找到合适的索引,因此它们可能会运行很长时间并查找大量数据.

  1. 你会建议什么样的存储引擎?(基本上是MyISAM与InnoDB.)
  2. 如果使用MyISAM,长查询会阻塞插入吗?
  3. 表大小是一个问题(不是很大,但仍然).在这方面,一台发动机比另一台更有效吗?
  4. 性能方面,他们如何比较?
  5. 在这种情况下还有什么我必须注意的吗?

mysql performance myisam innodb

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

MySQL InnoDB比MyISAM慢得多

我有两个表(缩小到重要字段):

syskeywordobjects:
pksyskeywordobjects BIGINT
fksyskeywords BIGINT
fkcontents BIGINT

fkcontents INDEX (fkcontents)
fksyskeywords INDEX (fksyskeywords)
fkcontents_fksyskeywords INDEX (fkcontents, fksyskeywords)


syskeywords:
pksyskeywords BIGINT
keyword VARCHAR

keyword INDEX (keyword)
Run Code Online (Sandbox Code Playgroud)

在这两个表上,我运行以下查询:

SELECT k.pksyskeywords, k.keyword, COUNT( k.pksyskeywords ) AS counter
FROM syskeywordobjects ko INNER JOIN syskeywords k ON ko.fksyskeywords = k.pksyskeywords
WHERE (
    k.pksyskeywords <> 1218713201167374664
    AND EXISTS (
        SELECT innerko.pksyskeywordobjects
        FROM syskeywordobjects innerko
        WHERE ko.fkcontents = innerko.fkcontents
        AND innerko.fksyskeywords = 1218713201167374664
    )
)
GROUP BY k.pksyskeywords, k.keyword
ORDER BY counter DESC 
LIMIT 20
Run Code Online (Sandbox Code Playgroud)

如果表使用MyISAM,则查询大约需要1-2秒,但如果我使用InnoDB(我必须这样做)则需要25-30秒.为什么InnoDB慢了大约20倍? …

mysql performance myisam innodb

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

提交和回滚在Mysql的MyISAM中不起作用

当我测试一些mysql提交和回滚过程时,我发现了一些关于MyISAM Engine的提交和回滚的问题.可以提交或回滚不在MyISAM引擎上工作吗?我可以在InnoDB和MyISAM Engine之间了解不同.

mysql myisam commit rollback

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

Hibernate JPA:忽略错误的SQL外键值

我有一个要维护的项目,该项目的持久性层使用JPAHibernate并且它在MySQL服务器上运行,数据库不在数据库中 relational,并且引擎MyISAM在所有表上。

我有一些外键关系hps映射为@ManyToOne我实体上的关系。

现在的问题是,这些列中的某些列应该是foreignkeys为了正确映射而创建的,但它们不是(因为引擎是MyISAM,并且DBrelational是理论上的),因此其中一些列具有错误的值,例如(负数) -1,0,不存在的已故父母)

@Entity
public class EntityA {

   @ManyToOne
   @JoinColumn(name="COL_FK")
   private EntityB b;

}
Run Code Online (Sandbox Code Playgroud)

在数据库中,可能的值为COL_FK0,-1,DEAD PARENTS

我既不能更改数据库结构,也不能编辑列中的数据。我所能做的就是更改代码。

我怎么能告诉Hibernate忽略那些值,而不会RuntimeException仅仅因为它的一个元素包含了一个错误的foreingkey值就抛出一个列表。

谢谢。

更新:

@Embeddable
public class EntityA {
    @ManyToOne()
    @JoinColumn(name = "idClient")
    @NotFound(action = NotFoundAction.IGNORE)
    private ClientBO idClient;

}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪 :

AVERTISSEMENT: org.springframework.orm.jpa.JpaObjectRetrievalFailureException: Unable to find xx.xxx.xx.xxx.ClientBO with id 210; nested exception is …
Run Code Online (Sandbox Code Playgroud)

java myisam hibernate jpa spring-data

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