mysql中几个概念的复习
一、事务
-
InnoDB:事务、外键、数据安全
-
MyISAM:全文搜索(老版本)、地理空间、简单计数
⚠️ 需要注意的影响:
1. 磁盘空间占用增加
-
InnoDB 表比 MyISAM 大 20-30%
-
因为有额外的事务日志和索引结构
2. 内存使用增加
-
InnoDB 需要缓冲池来缓存数据和索引
-
建议调整
innodb_buffer_pool_size
3. 备份和恢复
InnoDB中事务的用法:// 这些都是 PDO 自带的,直接使用 Db::pdo()->beginTransaction(); // 开始事务 Db::pdo()->commit(); // 提交事务 Db::pdo()->rollBack(); // 回滚事务
二、外键
外键的好处,可以数据约束。比如:删除主表内容,外键约束的从表记录会自动删除,不需要手动操作。
跟事务一样,只有InnoDB类型的表格有外键设置。
-
InnoDB:事务、外键、数据安全
-
MyISAM:全文搜索(老版本)、地理空间、简单计数
-- 1. 转换主表存储引擎 ALTER TABLE articles ENGINE=InnoDB; -- 2. 转换内容表存储引擎(如果存在) ALTER TABLE article_contents ENGINE=InnoDB; -- 3. 添加分类外键(如果有分类表) ALTER TABLE articles ADD CONSTRAINT fk_articles_category FOREIGN KEY (aid) REFERENCES article_categories(id) ON DELETE RESTRICT ON UPDATE CASCADE; -- 4. 添加内容表外键 ALTER TABLE article_contents ADD CONSTRAINT fk_content_article FOREIGN KEY (aid) REFERENCES articles(id) ON DELETE CASCADE ON UPDATE CASCADE;
三、抛出错误
可以定义一个统一的错误处理类,也可以用系统自带的类。
统一进行错误处理。
try { //抛出错误 if(!$mainResult){ //条件1 throw new GhException("更新失败", 500); } if(!$contentResult){ //条件2 throw new GhException("更新内容失败", 500); } // 提交事务 Db::pdo()->commit(); success("更新成功"); } catch (\Exception $e) { //统一获取抛出的错误,进行处理 error($e->getMessage()); }
-

浙公网安备 33010602011771号