在MySQL中选择哪个引擎

时间:2012-12-01 17:13:12

标签: mysql web-applications

我正在MySQL中设计在线商店数据库,下面是我的代码:

CREATE  TABLE IF NOT EXISTS `eshop`.`sellers` (
  `seller_id` INT(11) NOT NULL ,
  `seller_name` VARCHAR(45) NOT NULL ,
  `password` VARCHAR(45) NOT NULL ,
  `contacts` VARCHAR(45) NOT NULL ,
  PRIMARY KEY (`seller_id`) ,
  UNIQUE INDEX `seller_id_UNIQUE` (`seller_id` ASC) ,
  UNIQUE INDEX `seller_name_UNIQUE` (`seller_name` ASC) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8

CREATE  TABLE IF NOT EXISTS `eshop`.`goods` (
  `good_id` INT NOT NULL ,
  `name` VARCHAR(45) NOT NULL ,
  `description` TEXT NULL ,
  `price` INT NULL ,
  `photo` VARCHAR(45) NOT NULL ,
  `owner_name` VARCHAR(45) NULL ,
  `new` TINYINT(1) NOT NULL ,
  `approvement_status` TINYINT NOT NULL ,
  `contacts` VARCHAR(150) NOT NULL ,
  `date` DATE NOT NULL ,
  `seller_id_fk` INT NOT NULL ,
  PRIMARY KEY (`good_id`) ,
  UNIQUE INDEX `good_id_UNIQUE` (`good_id` ASC) ,
  INDEX `seller_id_fk` (`seller_id_fk` ASC) ,
  CONSTRAINT `seller_id_fk`
    FOREIGN KEY (`seller_id_fk` )
    REFERENCES `eshop`.`sellers` (`seller_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8

我在选择MySQL引擎时遇到问题,来自this post我理解MyISAM和InnoDB之间的区别。在我的项目中会有更多的读取而不是写入,因为商店的商品将被视为超过添加,所以我需要MyISAM,但在上面的脚本中我使用了InnoDB,因为它支持外键。我应该选择什么?

2 个答案:

答案 0 :(得分:1)

您要问的问题是优化和性能。如果你足够幸运,你的股票和用户群变得非常大,那么你可以担心调整事情,这样你就有很多表现。您也可以利用MySQL数据库引擎技术的未来发展。你拥有的东西可以为成千上万的用户和数以万计的待售物品工作。

现在,不要浪费时间担心这些事情。使用您拥有的,完成项目的开发,并在公众面前完成。

答案 1 :(得分:0)

如果您使用MyISAM,您的应用程序必须自己维护引用完整性,因此我将决定应用程序框架的设计。