存储引擎的优缺点及增删改查基本操作

 

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;

原文地址:https://www.cnblogs.com/chblogs/p/7113682.html