zoukankan      html  css  js  c++  java
  • 存储引擎的优缺点及增删改查基本操作

     

    InnoDB存储引擎

    • 优点:提供了事务管理、回滚、崩溃修复能力、和多版本并发控制的事务安全
    • 缺点:读写稍微差点,占用的数据空间相对较大,从3.23.34a开始包含InnoDB存储引擎

    InnoDB支持Auto_INCREMENTAL 自动增长的列值不能为空 且唯一 且为主键
    支持外键Foreign KEY 外键所在的表为子表 依赖父表

    表结构在.frm文件中 数据和索引存储在innodb_data_home_dir 和innodb_data_file_path定义的表空间中

    MyISAM存储引擎:

    • 优点:占用空间小。处理速度快
    • 缺点:不支持事务的完整性和并发性
    生成三个文件
    • .frm 文件存储表的结构
    • .myd 文件存储数据文件
    • .myi 文件存储索引
    表支持3种存储格式:
    • 静态型: 字段是固定不变的
    • 动态型: 字段不算固定的
    • 压缩型: 需要使用myisampack工具创建,占用空间小
    Memory存储引擎:
    • 优点:处理速度非常快
    • 缺点:数据易丢失,生命周期短

    memory存储引擎使用存储在内存中的内容创建表,而且所有数据放在内存中

    每个memory存储引擎的表实际对应一个磁盘文件,类型为frm类型,该文件只有表的结构没有数据文件都是存储在内存中,有利于数据的快速处理,前提是要有足够的内存维持memory存储引擎的表的使用,如果不需要了可以释放这些内存,甚至可以删除不需要的表
    一般没有用这个引擎的,如果内存异常或者机器重启数据就没有了,生命周期很短

    技巧:

    同一个数据库中可以使用多种存储引擎的表,如果一个表要求较高的事务处理,可以选择InnoDB这个数据库可以将查询要求比较高的表选择MyISAM存储引擎,如果需要数据库中一个用于查询的临时表,可以选择Memory存储引擎

    从事务安全、存储限制、空间使用、内存使用、插入数据的速度、对外键的支持

    查看数据库:
    创建、删除数据库
    修改存储引擎:
    利用三种方法找出所使用的mysql数据库的默认存储引擎?
    1. show enginesG;
    2. show variables like "storage_engine"
    3. cat /etc/my.cnf看下default-storage-engine="INNODB"
    存储引擎InnoDB MyISAM MEMORY 优缺点?

    1.InnoDB优点支持事务处理、回滚、崩溃修复处理以及多并发控制 缺点:速度略慢 占用空间大
    2、MyISAM 优点存储速度快、占用空间小 缺点:不支持事务处理 并发
    3.Memory 存储速度非常快,缺点: 数据易丢失

    增删改查基本操作

    9、熟悉mysql的调优和增删改查基本操作, 数据备份和恢复,主从同步
    优化MySQL数据库的几个步骤 、
    1 开启慢查询日志
    2 修改mysql 数据库配置文件, 这个步骤一般都由DBA 运维来做
    比如设置查询缓冲区大小

    增删改查
    改toor 用户密码
    方法1 mysqladmin -uroot -p原密码 passwd 新密码
    方法2 SET PASSWD FOR 'root'@'localhost' = '新密码'
    创建用户
    1 CREAT user 'chen'@'localhost' identified by 'chenhao'
    2 GRANT all privileges ON databsername TO 'username'@'host' identified by 'chenhao'

    新建一个用户test2 密码abc 只可localhost登录,可对chen 数据库增删改查操作
    GRANT select,insert,update,delete on chen.* to 'test'@'localhost' by 'abc' (取消密码 '' 填空即可)

    刷新表
    flush privileges;

    创建表
    creat database test;

    显示所有的数据库
    show databases;

    删除库test
    drop databases test;

    连接数据库
    use test;

    查看当前使用的数据库
    select databaes();

    查看表
    show tables; 操作前先连接某个数据库

    建立表
    creat table table123 (coll type1 [not null] [prinmary]);

    根据已有库创建新表
    creat table newtable like oldtable; 只有表结构
    creat table newtable as select * from oldtable; 即包含结构,还包含数据

    获取表结构
    DESC table;

    删除表名为table3的表
    DROP table table3;

    更改表名
    rename table table22 to table44;

    在表中增加字段
    在myclass 中添加一个字段passtest 类型位 int4 默认值为0
    alter table myclass add passtrst int(4) default '0';

    查询表中所有的数据
    select * from myclass;

    SELECT * FROM myclass where name='chen'


    查看表中第二行的数据
    select * from myclass limit 2;

    删除表中编号为4的记录
    delete from myclass where id=4;

    修改 myclass 表中编号为1 的记录, 将abcd改为99.99
    update myclass set abcd=99.99 where id=1;

    *** *
    *****
    数据库备份和还原
    备份 mysqldump -uroot -p 库名 表名 > /var/lib/mysql/mydb.sql


    还原MariaDB [mydb]> source /var/lib/mysql/mydb.sql;

  • 相关阅读:
    Git Bash 常用指令
    C/C++连接MySQL数据库执行查询
    question from asktom
    ORACLE AWR报告
    查看oracle表索引
    ORACLE数据库关闭与启动
    SYS vs SYSTEM and SYSDBA vs SYSOPER
    【面试】二叉树遍历的非递归实现
    快速排序的非递归实现
    MySQL数据库基础
  • 原文地址:https://www.cnblogs.com/chblogs/p/7113682.html
Copyright © 2011-2022 走看看