zoukankan      html  css  js  c++  java
  • 高性能MYSQL读书笔记1

    一.
    1 每个 客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU核心或者cpu中运行.服务器会负责缓存线程,因此不需要为每一个新建的连接创建或销毁线程.
    对于select语句,在解析查询之前,服务器会先检查查询缓存,如果能在其中找到对应的查询,服务器则不再执行查询解析,优化和执行的整个过程,而直接返回查询缓存中的结果.
    对数据的并发处理:
    共享锁和排他锁,也叫读锁或写锁.
    读锁是共享的,相互不阻塞的.多个客户在同一时刻可以同时读取同一个资源,而互不干扰.
    写锁是排他的,会阻塞其他的写锁或读锁.只有这样,才能保证同一时刻只有一个用户能执行写,并防止其他用户读取正在写入的同一资源
    锁粒度
    加锁也需要消耗资源,包括获得锁,检查锁是否解除,释放锁.
    一般都是表上施加行级锁(row level lock)
    两种锁策略:
    表锁:锁定整张表,阻塞其他用户对该表的所有读写操作.
    行级锁:
    最大程度的支持并发处理,(但因为每行都可能有锁的操作,锁的开销最大).InnoDB实现了行级锁.行级锁只在存储引擎层实现,而服务器层没有实现.
    事务
    隔离级别
    未提交读:事务中的修改,在事务未提交前,其他事务也是可见的,这种情况叫脏读.在实际中很少使用.
    提交读:大多数数据库都是这种隔离级别的(mysql不是).提交事务前,其他事务不能看到修改的数据
    可重复读:mysql的默认隔离级别.

    死锁:
    InnoDB处理死锁:将持有 最少行级排他锁的事务进行回滚,

    mysql中的事务:

  • 相关阅读:
    UVa 10118 记忆化搜索 Free Candies
    CodeForces 568B DP Symmetric and Transitive
    UVa 11695 树的直径 Flight Planning
    UVa 10934 DP Dropping water balloons
    CodeForces 543D 树形DP Road Improvement
    CodeForces 570E DP Pig and Palindromes
    HDU 5396 区间DP 数学 Expression
    HDU 5402 模拟 构造 Travelling Salesman Problem
    HDU 5399 数学 Too Simple
    CodeForces 567F DP Mausoleum
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310640.html
Copyright © 2011-2022 走看看