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分片?
非关系型数据库
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。