数据库重点

数据库重点

数据库

MySQL

客户端把数据存储到数据库服务器上的过程
1、连接到数据库服务器 : mysql -uroot -p123456
2、选择一个库 :use 库名;
3、创建表或者修改表 :create …
4、断开与数据库服务器的连接 :exit | quit | \q
char 和 varchar 的特点
1、char(定长)
浪费存储空间,但是性能高
2、varchar(变长)
节省存储空间,但是性能低
1、MySQL中的数据类型有 ____ _____ ____ _____(数值、字符、枚举、日期时间类型)
2、关系型数据库的核心内容是 关系二维表

MySQL索引的优缺点

优点:可以加快数据的检索速度,减少无效的查询
MySQL常用BTree算法


缺点:当对表中的数据进行增加、删除、修改的时候,索引需要动态维护,降低了数据的维护速度。索引需要占用物理存储空间

MySQL的存储引擎

MySQL的存储引擎默认是InnoDB 除了InnoDB,工作中还有时候会用MyISAM
InnoDB支持事务,外键关联,行级锁
InnoDB的特点:

  1. 共享表空间
  2. 支持行级锁

MyISAM的特点:

  1. 独享表空间
  2. 支持表级锁

:加锁的目的:解决客户端并发访问的冲突问题
读锁(select)共享锁
加读锁之后不能更改表中内容,但可以进行查询
写锁(insert,update,delete)互斥锁、排他锁
如何决定使用哪种存储引擎
1、执行查询操作多的表使用myisam存储引擎(使用innodb浪费资源)
2、执行写操作比较多的表使用innodb存储引擎
MySQL调优
1、选择合适的存储引擎
1、经常用来读的表使用myisam存储引擎
2、其余的表都用innodb存储引擎
2、SQL语句调优(尽量避免全表扫描)
1、在select where order by常涉及到的字段上建立索引
2、where子句中不使用 !=,否则将放弃使用索引进行全表扫描
3、尽量避免用NULL值判断,否则会全表扫描
示例:
select id from t1 where number is null;
优化:
在number字段设置默认值0
4、尽量避免 or 来连接条件,导致全表扫描
示例(优化前):
select id from t1 where id=10 or id=20;
优化后:
select id from t1 where id=10
union all
select id from t1 where id=20;
5、模糊查询尽量避免使用前置 %,导致全表扫描
select id from t1 where name like “a%”;
6、尽量避免 in 和 not in,导致全表扫描
select id from t1 where id in(1,2,3);
select id from t1 where id between 1 and 3;
7、尽量避免使用 select * …,要用具体的字段列表代替 *,不要返回用不到的任何字段

关系型数据库和非关系型数据库的优缺点

关系型数据库
采用关系模型来组织数据结构的数据库 (二维表)
Oracle DB2 SQLServer MySql SqLite(Python标准库支持)
优点 :容易理解,类似我们常见的表格
使用方便,都是使用sql语句,SQL语句非常成熟
数据一致性高,冗余度低,完整性好
技术成熟,可以使用外部链接等比较复杂的操作
缺点 :不能很好的满足高并发需求,每次都需要进行sql语句的解析

针对含量数据的瞬间爆发读写性能不足,关系型数据库内部每步操作都需要加锁保证操作的原子性
数据扩展普遍比非关系型困难
数据一致性高,有时会浪费大量空间

非关系型数据库 (NoSql --> Not only Sql)
优点 : 高并发,大数据读写能力强
支持分布式,容易扩展
弱化了数据结构,降低了数据的一致性
缺点 : 通用性差,没有像sql那样一致的操作
操作灵活,容易混乱
没有join,有的数据库事务支持等操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值