• 高性能MYSQL读书笔记1


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

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

    mysql中的事务:

  • 相关阅读:
    页面设计用字体代替图标
    优秀的Markdown编辑器MarkdownPad2免费版使用全功能
    NPOI导出EXCEL后公式无结果,公式重新计算开关
    C#远程连接sqlserver时,尝试读取或写入受保护的内存
    oracle 列转行
    sql server 2008r2 备份到局势网共享硬盘
    SmartWeatherAPI C#版
    RDL 数值列排序
    oracle 常用语句
    windows 2008 r2或win7安装SP1补丁,安装sqlserver 2012
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310640.html
Copyright © 2020-2023  润新知