mysql中几个概念的复习

一、事务

  • InnoDB:事务、外键、数据安全

  • MyISAM:全文搜索(老版本)、地理空间、简单计数

    ⚠️ 需要注意的影响:

    1. 磁盘空间占用增加

    • InnoDB 表比 MyISAM 大 20-30%

    • 因为有额外的事务日志和索引结构

    2. 内存使用增加

    • InnoDB 需要缓冲池来缓存数据和索引

    • 建议调整 innodb_buffer_pool_size

    3. 备份和恢复

    -- MyISAM 表可以直接拷贝文件备份
    -- InnoDB 需要专用工具或逻辑备份
    mysqldump -u username -p database_name > backup.sql

     

    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());
                }

     

     

posted @ 2025-09-28 09:40  充实地生活着  阅读(7)  评论(0)    收藏  举报