数据库篇

 ado.net 九大步骤:https://www.cnblogs.com/Allofus/p/15033965.html

Connection  数据库连接对象
Command     数据库命令对象
DataReader  数据读取器
DataSet     数据存储器

DataCommand 执行语句命令对象
DataAdapter 数据集合,用于填充
int count = (int)Command.ExecuteScalar();
int rows = Command.ExecuteNonQuery();
SqlDataReader reader = Command.ExecuteReader();

触发器

触发器是在对表进行插入、更新或删除操作时自动执行的存储过程;
触发器通常用于强制业务规则;
触发器是一种高级约束,可以定义比用 CHECK 约束更为复杂的约束:可执行复杂的SQL语句(
if/while/case)、可引用其它表中的列;
触发器定义在特定的表上,与表相关;
自动触发执行;
不能直接调用;
是一个事务(可回滚);

视图和存储过程

视图的优点:
    简化操作,把经常查询的数据定义为视图;
    安全性,用户只能查询和修改能看到的数据;
视图的缺点: 性能偏慢,视图查询时也会转化成对基本表的查询; 存储过程和视图的区别: 视图呈现数据、过程处理数据(可接收参数,输出参数); 过程在创建时就在服务器上进行编译,效率更高;


关系型数据库

具有ACID的特点,原子性 一致性 隔离性 持久性;

提问:

如何提高 高并发读写效率?比如网站每秒上万次读写请求。

海量数据的高效率读写如何处理?比如在一个海量数据的表中查询。

解决:

0. sql 调优,参考:https://www.cnblogs.com/Allofus/p/15324044.html

1. 数据库分表可以解决单表海量数据的查询性能问题,分库可以解决单台数据库的并发访问压力问题。

  为什么分表还要分库:因为分表的实质还是在一个数据库上进行的操作,很容易受数据库IO性能的限制。

  具体参考:https://www.jianshu.com/p/84da619ce203

2. 热数据存 db,需分库分表;冷数据存在 ES(搜索引擎查询)和 Hive(离线查询),提高 read 请求。

3. 读写分离、限流、主从主备、数据库集群、mycat分片?

非关系型数据库

非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合
原文地址:https://www.cnblogs.com/Allofus/p/15014016.html