鲁班学院java架构师成长路线

oracle、mysql分别实现主键自增
怎么实现?
在mysql主键定义的后面加上auto_increment;
Oracle:
1.建立一个表,
2.建立一个sequence序列
3.建立一个触发器

数据库优化
电商项目中设计某个商品表的过程之中,有四个字段商品id,商品价格price,商品数量count,商品金额total,为什么这样设计呢?

1.数据细分:
电商项目一般的话有三个主要业务:查询、下单、付款,其中下单的话只涉及商品id、商品的价格与商品的数量和商品的金额,然后将这四个属性单独创建一个表,可以降低查询和下单之间的影响,必要的时候,我们还可以把查询与下单拆分成两个独立的系统来操作。

2.数据安全:
商品的金额是计算好然后保存到数据库的,所以在使用时可以不用去界面获取了,这样还可以防止有人恶意篡改界面,然后导致的金额过低等问题

怎么优化数据库
使用索引
建立分区,分区索引
使用存储过程
java架构师成长路线-Mybatis研究手册(集合参数类型)_第1张图片
(入门案例)

MyBatis基本使用
java架构师成长路线-Mybatis研究手册(集合参数类型)_第2张图片
(MyBatis基本使用)

mysql中的锁
mysql中有三种锁:
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

mysql各种锁的使用场景
适用:从锁的角度来讲,表级锁的话更适用于以查询为主,只有少数的按索引条件更新数据应用的,比如Web的应用;而行级锁的话更适用于有大量的按索引条件并发更新少量不同数据,同时又可以并发查询的应用,比如一些在线事务处理(OLTP)系统。