一,数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库表中的数据。
1,事务的保障:ACID。
ACID一言以蔽之就是原子性、一致性、隔离性、持久性事务,它是四个单词的缩写:
¥Atomicity,原子性,事务中的操作要么全部完成,要么全失败。
¥Consistency,一致性, 在事务开始时或者结束时,数据库应该处于同一状态。
¥Isolation,隔离性,事务将假定只有它自己在操作数据库,彼此不知晓。
¥Durablity,一旦事务完成,就不能返回。
2,丰富的数据类型和SQL的操作方式。
1),数字:整数和小数。整数可以分为32位,64位。
2),字符串类型:字符串分为固定长度和可变长度。
3),时间, 时间和日期
4),二进制流。
3,SQL语句的结构主要分为以下几大部分:
1),操作,select, insert, update, delete
2),表对象。
3),字段范围
4),where
5),order排序
6),查询范围限制。
4,对数据高并发读写的要求。
数据库读写压力大, 硬盘IO无法承受。一般处理方法是主从架构、读写分离、分库、分表,缓解写压力,增强读库的可扩展性。
5,对海量数据的存储和访问
存储记录数量有限,SQL查询效率极低的情况下。通过分库、分表,缓解数据增长压力。
6,伸缩性、可用性、可靠性方面的需求。
横向扩展艰难,无法通过快速增加服务器节点实现,系统升级和维护造成服务不可用。通过主从架构,增强读库的扩展性,利用MMM架构处理写的瓶颈。
7,分库分表的缺点:
1),受业务规则影响,需求变动导致分库分表的维护复杂。
2),系统数据访问层代码需要修改。
8,主从架构缺点:
1),Slave实时性保障。对于实时性很高的场合可能需要做一些处理( 在第一个购买增值服务的例子中,添加扣费记录之后,在读写分离的场景下,立马去从库查询扣费记录不一定能查到 )。
2),高可用性问题,Master就是那个致命点,容易产生单点故障。
MMM缺点:本身扩展性差,一次只能一个Master可以写入,只能解决有限数据量下的可用性。
mysql索引概念:
假如这本书1000页,有500也是目录,它当然效率低,目录是要占纸张的,而索引是要占磁盘空间的。
Mysql索引主要有两种结构:B+Tree索引和Hash索引。
Hash索引
MySQL中,只有Memory存储引擎显示支持Hash索引,是Memory表的默认索引类型。
因为是hash结构,每个键只对应一个值,而且是散列的方式分布。所以并不支持范围查找和排序功能。
B+数索引
二,触发器。
1,触发器的“自动性”。(修改一张表,其他几个或者多个表中的冗余字段会更改。)
2,触发器的数据完整性。(回滚性,要不都更改,要不都不更改。)
例子:
【mysql> drop trigger if exists deletecomment ||
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> create trigger deletecomment before delete on user for each row
-> begin
-> delete from comment where comment.u_id=old.id;
-> end ||
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter;
删除user表中的数据,之后会删除comment表中一条对应user表的数据。
】
三,存储过程。
1、使用了存过程,很多相似性的删除,更新,新增等操作就变得轻松了,并且以后也便于管理! 2、存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。 3、存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。 4、存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。 5、存储过程主要是在服务器上运行,减少对客户机的压力。 6、存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。 7、存储过程可以在单个存储过程中执行一系列SQL语句。 8、存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
例子:
-- 显示数据库中所有的存储
show PROCEDURE status;
-- 查看某个存储过程
show create procedure sp1
--删除存储过程
drop PROCEDURE sp1
-- 创建存储过程
create PROCEDURE sp1() select * from h_hub_status
-- 执行存储过程
CALL sp1()
四,视图。
1,简单:使用视图的用户不需要关系视图中数据怎么查询得到的,视图中的数据对用户来说已经是过滤好的符合条件的结果集;
2,安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个列或某个行,但是通过视图可以简单实现;
3,数据独立;一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,原表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。
视图操作
视图的操作包括创建视图、查看视图、删除视图和修改视图。
例子:
create view view_test as select * from tn_admin //创建视图
create or replace view view_test as select * from tn_lock //修改视图
desc view_test /show fields from view_test //查看视图结构
转载于:https://my.oschina.net/u/3290532/blog/858753