新零售数据库设计与实战 第四篇

目录

常见问题与企业级解决方案

新零售数据库设计与实战 第四篇_第1张图片
新零售数据库设计与实战 第四篇_第2张图片

多个事物并发执行,对同一条记录做修改就会出现超售的现象。
serializable就是让数据库串行化的执行事物,一个事物执行完才能进行下一个事物。但是sql语句对数据库的修改最终是反映在磁盘上的,磁盘的速度比内存和cpu慢。多个事物串行执行整个速度就太慢了。
新零售数据库设计与实战 第四篇_第3张图片
更改数据之前, 查询数据的版本号,把版本号记录在本地,然后在执行updata语句之前 先去比较这个数据真实的版本号和我之前记录的版本号有没有冲突,如果没有冲突则执行update操作。
实现乐观锁的机制是开发人员编写程序实现。
新零售数据库设计与实战 第四篇_第4张图片
新零售数据库设计与实战 第四篇_第5张图片
新零售数据库设计与实战 第四篇_第6张图片
redis单线程比多线程(有切换调度的时间)执行起来速度还快
新零售数据库设计与实战 第四篇_第7张图片
客户端1发来第二条指令前,redis由于是非阻塞的会去执行客户端2的指令。导致出现超售现象。
新零售数据库设计与实战 第四篇_第8张图片
新零售数据库设计与实战 第四篇_第9张图片
新零售数据库设计与实战 第四篇_第10张图片
新零售数据库设计与实战 第四篇_第11张图片
新零售数据库设计与实战 第四篇_第12张图片
新零售数据库设计与实战 第四篇_第13张图片

新零售数据库设计与实战 第四篇_第14张图片
新零售数据库设计与实战 第四篇_第15张图片
新零售数据库设计与实战 第四篇_第16张图片
新零售数据库设计与实战 第四篇_第17张图片
新零售数据库设计与实战 第四篇_第18张图片
开启事物后,在客户端执行的命令都不会传递给redis,而是先缓存到本地。等到执行EXEC命令,redis会批量执行。
新零售数据库设计与实战 第四篇_第19张图片
新零售数据库设计与实战 第四篇_第20张图片
新零售数据库设计与实战 第四篇_第21张图片
新零售数据库设计与实战 第四篇_第22张图片
新零售数据库设计与实战 第四篇_第23张图片
新零售数据库设计与实战 第四篇_第24张图片
新零售数据库设计与实战 第四篇_第25张图片
新零售数据库设计与实战 第四篇_第26张图片
新零售数据库设计与实战 第四篇_第27张图片
在这里插入图片描述
新零售数据库设计与实战 第四篇_第28张图片
新零售数据库设计与实战 第四篇_第29张图片
新零售数据库设计与实战 第四篇_第30张图片
新零售数据库设计与实战 第四篇_第31张图片
新零售数据库设计与实战 第四篇_第32张图片
新零售数据库设计与实战 第四篇_第33张图片
新零售数据库设计与实战 第四篇_第34张图片
新零售数据库设计与实战 第四篇_第35张图片
新零售数据库设计与实战 第四篇_第36张图片
新零售数据库设计与实战 第四篇_第37张图片
新零售数据库设计与实战 第四篇_第38张图片
新零售数据库设计与实战 第四篇_第39张图片
新零售数据库设计与实战 第四篇_第40张图片
新零售数据库设计与实战 第四篇_第41张图片
新零售数据库设计与实战 第四篇_第42张图片
新零售数据库设计与实战 第四篇_第43张图片
LIKE “%S%” 会越过ename索引,执行全表扫描。
新零售数据库设计与实战 第四篇_第44张图片
IS NULL 和 IS NOT NULL会让全表跳过索引,执行全表扫描。索引是一个二叉树,null值没有办法排序。
新零售数据库设计与实战 第四篇_第45张图片
新零售数据库设计与实战 第四篇_第46张图片
新零售数据库设计与实战 第四篇_第47张图片
新零售数据库设计与实战 第四篇_第48张图片
新零售数据库设计与实战 第四篇_第49张图片
新零售数据库设计与实战 第四篇_第50张图片
新零售数据库设计与实战 第四篇_第51张图片
实际的连接数达到最大并发连接数后,数据库会把新的连接请求放在堆栈里面。等到有空闲连接的时候再把连接分配给堆栈里面的请求。所以可以增加堆栈的大小。
新零售数据库设计与实战 第四篇_第52张图片
新零售数据库设计与实战 第四篇_第53张图片
新零售数据库设计与实战 第四篇_第54张图片
新零售数据库设计与实战 第四篇_第55张图片
新零售数据库设计与实战 第四篇_第56张图片
修改mysql的配置文件my.cnf:
新零售数据库设计与实战 第四篇_第57张图片
新零售数据库设计与实战 第四篇_第58张图片
新零售数据库设计与实战 第四篇_第59张图片
从慢查询日志中获取到耗时长的sql语句,接着要分析为什么该sql语句慢。
新零售数据库设计与实战 第四篇_第60张图片

你可能感兴趣的:(数据库实战)