您的位置:首页 > 数据库 > SQL

读《高性能MySQL》第一章--MySQL架构与历史

2016-05-08 21:58 573 查看
MySQL最重要、最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离。
1.MySQL逻辑架构                                                  





最上层服务:大多数给予网络的客户端/服务器的工具或者服务都有类似的架构,eg:连接处理、授权认证、安全
第二层架构:大多数MySQL核心服务在此,eg:查询优化、分析、优化、缓存一级所有的内置函数。
        所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。
第三层架构:包括存储引擎。存储引擎负责MySQL数据的存储和提取。
        连接管理与安全性:每个客户端连接都会在服务器进程中拥有一个线程。
        当客户端连接到MySQL服务器时,服务器需要对其进行认证。(user,password,证书),然后验证其权限。
优化与执行:MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,eg:重写查询、决定表的读取顺序,以及选择合适的索引等。     
 
2.并发控制:只要有多个查询在同一时刻修改数据,就会产生并发控制问题。                    
   读锁(共享锁)和写锁(排它锁)                                       
   锁策略:在锁的开销和数据的安全性之间寻求平衡。                           
   表锁:锁定整张表->开销最小。                                       
   行级锁:最大程度的支持并发处理->开销最大(存储引擎层实现)。     
 
3.事务:一组原子性的S
4000
QL查询,或者说一个独立的工作单元。->ACID                        
     START TRANSACTION;->......->COMMIT;/ROLLBACK;                             
     原子性:一个事务不可分割;                                         
     一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态;                 
     隔离性:一个事务所做的修改在提交之前,对于其他事物是不可见的;                 
     持久性:一旦事务提交,则其所做的修改就会永久保存到数据库中。                                                             
              
     隔离级别:每种存储引擎实现的隔离级别不尽相同。                           
     READ UNCOMMITTED(未提交读):事务中的修改,即使没有提交,其他事务可见,脏读       
     READ COMMITTED(提交读):一个事务提交之前,仅自己可见。
     REPEATABLE READ(重复读):MySQL默认级别                       
     SERIALIZABLE(可串行化):强制事务串行执行,避免幻读。每一行数据加锁。。。不建议使用   (set TRANSACTION ISOLATION LEVEL ......)
                                                                                                            
     死锁:两个或多个事务在同一资源相互占用,并请求锁定对方占用的资源,导致恶性循环的现象。外部介入解除死锁->回滚部分或者整个事务。                          
      
     事务日志:采用追加的方式。。。???                                                                        
                     
     MySQL中的事务:InnoDB和NDB Cluster存储引擎。                             
     MySQL默认采用自动提交(AUTOCOMMIT=1)模式。SET AUTOCOMMIT=0/1;         
 
4.多版本并发控制(MVCC):通过保存数据在某个时间点的快照来实现的。
 
5.MySQL的存储引擎:注重MyISAM和InnoDB                           
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: