摘要:
幻读 场景例子(innodb的默认事物隔离级别是可重复读) CREATE TABLE ( int(11) NOT NULL, int(11) DEFAULT NULL, int(11) DEFAULT NULL, PRIMARY KEY ( ), KEY ( ) ) ENGINE=InnoDB; i 阅读全文
摘要:
几个影响sql语句性能的例子 案例一:假设你现在维护了一个交易系统,其中交易记录表tradelog包含交易流水号(tradeid)、交易员id(operator)、交易时间(t_modified)等字段。为了便于描述,我们先忽略其他字段。这个表的建表语句如下: mysql CREATE TABLE 阅读全文
摘要:
orderby是如何工作的 场景例子:假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回 前1000个人的姓名、年龄。 表结构: SQL语句:select city,name,age from t where city="杭州" order by name limit 1000; 全字 阅读全文
摘要:
count( )实现原理 不同引擎的实现: MyISAM引擎把表的总行数存在了磁盘上,执行COUNT( )就会直接返回,效率很高; InnoDB在count( )时,需要把数据一行一行的从引擎里面取出来然后累计记数。 注意如果有where过滤条件MYISAM速度就不是很快了。 为什么Innodb不和 阅读全文
摘要:
mysql脏页 由于WAL机制,InnoDB在更新语句的时候,制作了写日志这一个磁盘操作,就是redo log,在内存写完redo log后,就返回给客户端, 即更新成功。 把内存里的数据写入磁盘的过程,术语就是flush,在flush之前,实际数据和数据库中的数据是不一致的,因为在redo log 阅读全文
摘要:
mysql为什么有时会选错索引 场景例子:一张表里有a,b两个字段,并分别建立以下索引 CREATE TABLE ( int(11) NOT NULL, int(11) DEFAULT NULL, int(11) DEFAULT NULL, PRIMARY KEY ( ), KEY ( ), KEY 阅读全文
摘要:
行锁 innodb支持行锁,myisam只支持表锁,同一时刻每张表只能有一条数据被更新 在InnoDB事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放, 而是要等到事务结束时才释放。这个就是两阶段锁协议。 如果你的事务中需要锁多个行,要把最可能造成锁冲突、最可能影响并 发度的锁的申请时 阅读全文
摘要:
mysql基本架构 server层 连接器:管理连接,权限验证,先查询缓存,命中则返回结果。 分析器:词法分析,语法分析 词法分析,识别关键字,转换成列表或列 语法分析,判断是否满足语法规则 优化器:执行计划生成,索引选择 join联表操作执行方法的使用 执行器:操作引擎,返回结果 取到满足条件的第 阅读全文
摘要:
一、首先:以下代码都是在LINUX上执行的,因为新版本celery已经不支持windows系统,运行会报错。 Celery是处理大量消息的一个分布式系统,那他是如何运行的呢? 可以看到,Celery 主要包含以下几个模块: 任务模块 Task包含异步任务和定时任务。其中,异步任务通常在业务逻辑中被触 阅读全文
摘要:
Django信号 很多数情况下,我们需要在操作数据库之前或者之后做某些操作,比如说写个日志之类的,我们当然可以找到每一个sql语句,在其前后加一段代码, 但是,这不但浪费时间,还为以后的维护增加了难度,这个时候,就体现出信号的作用了。下面的代码是Django中对数据库增加一条数据的操作: 1 2 3 阅读全文