数据库问题总结

数据库问题总结:

1、MySQL数据库存储原理
存储的过程是一个可编程的函数,在数据库中创建并保存,有以下优点:
1、存储过程能实现较快的执行速度
2、存储过程允许标准组件是编程。
3、存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断 和较复杂的运算。
4、存储过程可被作为一种安全机制来充分利用。
5、存储过程能够减少网络流量

2、事务的四大特性
1、原子性:事务中的全部操作是一个不可分割对的整体,要么全部执行成功,要么全都不执行
2、一致性:当多个事务并行时,必须按照规定的顺序串行执行,保持执行后结果的一致性
3、隔离性:多个事务之间是互不影响的,执行结果对其他事务而言是透明的
4、持久性:对于已提交事务执行后的结果,必须保证该事务对数据库的修改不被丢失

3、常用的数据库存储引擎:
1、MyISAM,不支持事务,不支持行锁,不支持外键,不支持安全恢复,支持全文索引,支持延迟更新索引,极大提升写入性能;支持压缩表,减少存储空间
2、innoDB,支持行锁,支持外键,支持事务,支持安全恢复,不支持全文索引
MyISAM适用select密集型的表,innoDB适用于写操作密集型的表

4、关于数据库的优化:
1、MyISAM适用select密集型的表,innoDB适用于写操作密集型的表
2、配置主从,读写分离
3、对于单表的数据量非常大的,可以分区分表
4、优化查询语句,避免对null值判断,考虑对where和order_by跟的字段建立索引
5、不要使用外键,由程序控制
6、先分页在join
7、尽量不使用唯一约束,由程序控制
8、使用缓存,减少数据库的IO操作

4、数据库索引:
1、索引的创建:
在创建表的时候添加索引

CREATE TABLE tablename(
id INT(10) PRIMARY KEY,
content TEXT,
name CHAR(10) NOT NULL, 
[UNIQUE] INDEX name_index (name(4)))ENGION MyISAM DEFAULT CHARSE utf8;

在创建表以后添加索引

ALTER my_table ADD [UNIQUE] INDEX my_index(my_text);
CREATE INDEX my_index ON my_table(my_text);

根据索引查询

SELECT * FROM tablename WHERE MATCH(content) AGAINST('word1','word2',...);

删除索引

DROP my_index ON tablename;

查看表中的索引

SHOW INDEX FROM tablename

2、索引的实现原理:
索引的实现通常使用 B_TREE(平衡搜索多叉树)。B_TREE 索引加速了数 据访问,因为存储引擎不会再去扫描整张表得到需要的数据;相反,它从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。

3、什么时候要使用索引?
1、主键自动建立唯一索引;
2、经常作为查询条件在WHERE或者ORDER BY 语句中出现的列要建立索引;
3、作为排序的列要建立索引;
4、查询中与其他表关联的字段,外键关系建立索引
5、高并发条件下倾向组合索引;

4、什么时候不要使用索引?
1、经常增删改的列不要建立索引;
2、有大量重复的列不建立索引;
3、表记录太少不要建立索引;

Redis的用法:
1、用作缓存,减少数据库的I/O操作
2、利用set类型去重,
3、当做队列使用,如celery,分布式爬虫
4、网站排行榜
5、购物车数据存储

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值