zoukankan      html  css  js  c++  java
  • MySQL优化-存储引擎

    MySQL优化-存储引擎

    标签(空格分隔): mysql


    存储引擎

    查看存储引擎
    show engines
    
    Myisam:
        表锁 全文索引
    Innodb:
        行锁 事物 外键
    Memory:
        内存存储引擎 速度快 数据容易丢失
     
    Myisam:
        创建Myisam数据表
        create table(xxx)engine=Myisam charset=utf8
        Myisam 会生成三个表文件:
        /usr/local/mysql/var/databaseName/tableName
        student.frm    表结构     frame
        student.MYD    表数据     data
        student.MYI    表索引     index
        
        Myisam 支持复制粘贴 只需要把这三个文件copy
        就可以 无需sql导入
        
        Myisam 压缩机制 节省空间
        myisampack tablename    压缩-路径
        myisamchk --unpack tablename    解压
        myisamchk -rq tablename    重新生成索引
        
        /usr/local/mysql/bin/myisampack /usr/local/mysql/var/comic/student [压缩]
        /usr/local/mysql/bin/myisamchk -rq /usr/local/mysq/var/comic/student [重建索引]
        /usr/local/mysql/bin/myisamchk --unpack /usr/local/mysq/var/comic/student [解压]
        flush table student [刷新表]
        
        在执行重建索引是会有的会报错:
        [myisam] error:unknow variables read_buffer = 2M
        vi /etc/my.cnf
        在[myisamchk]
        把 read_buffer = 2M | write_buffer = 2M 注释掉就可以了
        
        压缩前:
        -rw-r----- 1 mysql mysql      8688 Aug  4 16:06 student.frm
        -rw-r----- 1 mysql mysql 201326592 Aug  4 16:39 student.MYD
        -rw-r----- 1 mysql mysql  43111424 Aug  4 16:39 student.MYI
        
        压缩后:
        -rw-r----- 1 mysql mysql     8688 Aug  4 16:06 student.frm
        -rw-r----- 1 mysql mysql 71303864 Aug  4 16:39 student.MYD
        -rw-r----- 1 mysql mysql     1024 Aug  4 16:51 student.MYI
        
        Myisam压缩后要重建索引 解压后无需重建索引
        Myisam压缩后只允许读操作 不允许写操作    [table student is read only]
        Myisam数据的写入数据和存储数据一致
        
        Myisam如果进行并发写入时 为了保证数据的一致性 加锁 只支持表锁。表锁会影响
        整个数据表的操作 其他操作在等待
        
    Innodb:
        Innodb默认只用一个表结构文件,索引和数据和整个数据库共同使用
        /usr/local/mysql/var/ibdata1    整个数据库的索引和数据
        /usr/local/mysql/var/comic/student1.frm    innodb表结构文件
        
        可以通过配置文件 达到每一个Innodb表结构文件对应一个表空间文件
        show variables like 'innodb_file_per_table'    [查看]
        set global innodb_file_per_table = 1    [开启]
        /usr/local/mysql/var/comic/student1.ibd
        
        Innodb复制恢复
        mysqldump -uroot -proot databaseName > 路径.sql    [备份]
        mysql -uroot -proot databaseName < 路径.sql    [还原]
    Memory:
        内部数据运行速度非常快,临时存储一些信息
        内存存储引擎,重启mysql数据会丢失
        
    summary:
        Myisam:写入数据非常快,适合读写频繁的系统
        Innodb:适用于业务逻辑较强,修改操作较多的系统
  • 相关阅读:
    Servlet 生命周期、工作原理(转)
    JVM的内存区域划分(转)
    Java的四个基本特性和对多态的理解
    单例模式和多例模式的区别(转)
    TCP/IP协议体系结构简介
    数据库优化性能
    存储过程的优缺点(转)
    ConurrentHashMap和Hashtable的区别
    XML和JSON优缺点
    HashMap和HashTable的区别
  • 原文地址:https://www.cnblogs.com/yanweifeng/p/9431593.html
Copyright © 2011-2022 走看看