下面是我的mysql DB中的2个表的行数
是1 myisam是另一个innodb,
谁能告诉我为什么innodb有这个〜在数字前?
这些数字来自phpmyadmin
10,308 MyISAM
~118,011 InnoDB
Run Code Online (Sandbox Code Playgroud) MySQL具有不支持事务的特殊表类型MyISAM.Oracle有类似的东西吗?我想创建只写数据库(用于日志记录),需要非常快(将存储大量数据)并且不需要事务.
我正在读这本书High Performance MySQL,它提到:
performing one query per table uses table locks more efficiently: the queries
will lock the tables invididually and relatively briefly, instead of locking
them all for a longer time.
Run Code Online (Sandbox Code Playgroud)
selecting什么东西,MyISAM放置表锁?有人可以解释一下吗?
我的一位朋友是DBA,他评论说,在MySQL中设计架构时,混合MyISAM和InnoDB在DBA社区中相当普遍.
我的问题是,如果这是真的,那么它有多好?它在可维护性,可扩展性等方面是否有任何影响?
我们正在实施一个分析书籍的系统.该系统是用PHP编写的,每本书都会循环显示单词并分析每个单词,从各种正则表达式和其他测试中设置某些标志(转换为数据库字段).
这会产生一个matches表,类似于下面的示例:
+------------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------------+--------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI | NULL | auto_increment | | regex | varchar(250) | YES | | NULL | | | description | varchar(250) | NO | | NULL | | | phonic_description | varchar(255) | NO | | NULL | | | is_high_frequency | tinyint(1) | NO | | NULL | | | is_readable | tinyint(1) …
如果MyISAM没有FK完整性,使用MyISAM表的django应用程序如何强制执行FK constaints的完整性?
刚刚离开大学,我就学会了设计数据库的"正确"方法.例如数据库规范化,如何构造表等
现在我面对的是他们没有在大学教我的东西......
看来我可以选择2个数据库引擎--MyISAM或InnoDB.
我知道我可以使用InnoDB存储引擎构建关系数据库,但据我所知,我无法使用MyISAM存储引擎构建关系数据库,因为我无法链接表.
所以 - 我的问题 - 请告诉我,如果我只是愚蠢或只是错过了一个技巧......
如果我无法使用MyISAM构建关系数据库,那么它有什么用呢?如何使用MyISAM确保数据库完整性?大多数人都使用MyISAM或INNODB吗?如何在两个MyIsam表之间强制执行约束?
例如,如果我正在建立一个小型在线商店,我将有一个产品表和一个类别表.产品必须属于1类.我如何使用MyIsam构建它?
我试图得到一个插入后触发器,以便不回滚对innodb表执行的插入操作.MyISAM似乎没有这个问题.
让我说明一下:
CREATE TABLE `testTable` (
`id` int(10) AUTO_INCREMENT,
`data` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB; #Engine supports transactions
CREATE TABLE `dummyTable` (
`id` int(10) AUTO_INCREMENT,
`data` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
DELIMITER $$
CREATE TRIGGER triggerTest AFTER INSERT ON `testTable`
FOR EACH ROW
BEGIN
INSERT INTO dummyTable VALUES(1, 2, 3, 4); #This will throw a column count error
END;$$
DELIMITER ;
INSERT INTO testTable(data) VALUES('This insert will be rolled back');
SELECT COUNT(1) FROM testTable; # 0
Run Code Online (Sandbox Code Playgroud)
如果您将引擎更改testTable …
我在stackoverflow本身上看到了关于MyISAM vs InnoDB这个主题的很多问题和答案.
但是,所有问题和答案都太旧了,与当前稳定版本的MySQL 5.7.x无关
当MyISAM和InnoDB都必须进行大量开发时.
因此,我需要目前版本为5.7.x的差异
所以,请不要将我的问题标记为重复,有人请解释这些存储引擎目前存在的差异以及它们之后的差异.
另外,请说明应该在哪种情况下为表选择哪个存储引擎.
属于同一模式的不同表是否可以具有不同的存储引擎,即少数表将具有InnoDB,而少数表将具有MyISAM.
如果是,那么如何在具有MyISAM和InnoDB的表之间执行JOIN查询?
这是真的,MySQL的是要删除的MyISAM从未来版本的存储引擎?
myisam ×10
mysql ×9
innodb ×5
database ×2
count ×1
django ×1
foreign-keys ×1
mysql-5.7 ×1
oracle ×1
performance ×1
php ×1
table-lock ×1
transactions ×1
triggers ×1