Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304411
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

MySQL网站数据库的23个注意事项uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

写在前面:最早接触的MySQL是在三年前,那时候MySQL还是4.x版本,很多功能都不支持,比如,存储过程,视图,触发器,更别说分布式事务等复杂特性了。但从5.0(2005年10月)开始,MySQL渐渐步入企业级网站数据库的行列了;复制、集群、分区、分布式事务,这些企业级的特性,使得现在的MySQL,完全可以应用于企业级应用环境(很多互联网公司都用其作为网站数据库站点服务器,尽管节约成本是一个因素,但是没有强大功能作后盾,则是不可想象的)。虽然,MySQL还有很多不足,比如,复制、分区的支持都十分有限、查询网站seo优化仍需要改进,但是MySQL已经是一个足够好的DBMS了,更何况它是opensource的。这段时间没有事,出于好奇,略微的研究了一下MySQL,积累了一些资料,欲总结出来。这些资料打算分为两部分,上部主要讨论MySQL的网站seo优化,其中主要参考了《MySQL Manual》和《high Performance MySQL》,假如如果有时间,以后在下部分析一下MySQL的源码。假如如果您是MySQL高手,希望您不吝赐教;假如如果您是新手,希望对您有用。

第一章、MySQL架构与概念
1、MySQL的逻辑架构

 最上面不是MySQL特有的,所有基于网络的C/S的网络应用程序都应该包括连接处理、认证、安全管理等。
中间层是MySQL的核心,包括查询解析、分析、网站seo优化和数据缓存等。同时它还提供跨存储引擎的功能,包括存储过程、触发器和视图等。
最下面是存储引擎,它负责存取数据。站点服务器通过storage engine API可以和各种存储引擎进行交互。

1.1、查询网站seo优化和执行(Optimization and Execution)
MySQL将用户的查询数据库语句进行解析,并创建一个内部的数据结构——分析树,然后进行各种网站seo优化,例如重写查询、选择读取表的顺序,以及使用哪个索引等。查询网站seo优化器不关心一个表所使用的存储引擎,但是存储引擎会影响站点服务器如何网站seo优化查询。网站seo优化器通过存储引擎获取一些参数、某个操作办法的执行代价、以及统计信息等。在解析查询之前,站点服务器会先访问查询数据缓存(query cache)——它存储SELECT数据库语句以及相应的查询结果集。假如如果某个查询结果已经位于数据缓存中,站点服务器就不会再对查询进行解析、网站seo优化、以及执行。它仅仅将数据缓存中的结果返回给用户即可,这将大大提高系统的性能。
 1.2、并发控制
MySQL提供两个级别的并发控制:站点服务器级(the server level)和存储引擎级(the storage engine level)。加锁是实现并发控制的基本具体相关方法,MySQL中锁的粒度:
(1)    表级锁:MySQL独立于存储引擎提供表锁,例如,对于ALTER TABLE数据库语句,站点服务器提供表锁(table-level lock)。
(2)    行级锁:InnoDB和Falcon存储引擎提供行级锁,此外,BDB支持页级锁。InnoDB的并发控制机制,下节详细讨论。
另外,值得一提的是,MySQL的一些存储引擎(如InnoDB、BDB)除了使用封锁机制外,还同时结合MVCC机制,即多版本两阶段封锁协议(Multiversion two-phrase locking protocal),来实现事务的并发控制,从而使得只读事务不用等待锁,提高了事务的并发性。

隔离级uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

脏读uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

不可重复读uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

幻象读uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

读未提交uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

(Read uncommitted)uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

读提交uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

(Read committed)uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

不可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可重复读uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

(Repeatable read)uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

不可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

不可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

可串行化uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

(Serializable)uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

不可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

不可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

不可能uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

各个具体网站数据库并不一定完全实现了上述4个隔离级别,例如,Oracle只提供READ COMMITTED和Serializable两个标准隔离级别,另外还提供自己定义的Read only隔离级别;SQL Server除支持上述ISO/ANSI SQL92定义的4个隔离级别外,还支持一个叫做“快照”的隔离级别,但严格来说它是一个用MVCC实现的Serializable隔离级别。MySQL 支持全部4个隔离级别,其默认级别为Repeatable read,但在具体实现时,有一些特点,比如在一些隔离级别下是采用MVCC一致性读。国产网站数据库DM也支持所有级别,其默认级别为READ COMMITTED。

1.3.4、InnoDB的锁模型
InnoDB的行级锁有两种类型:
(1)共享锁(shared lock,S):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。
(2)排它锁(exclusive lock,X):允许获得排它锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。
此外,InnoDB支持多粒度加锁(multiple granularity locking),从而允许对记录和表同时加锁。为此,InnoDB引入意向锁(intention locks),意向锁是针对表的:
(1)意向共享锁(IS):事务打算给数据行加行共享锁,事务在给一个数据行加共享锁前必须先取得该表的IS锁。
(2)意向排他锁(IX):事务打算给数据行加行排他锁,事务在给一个数据行加排他锁前必须先取得该表的IX锁。
例如,SELECT ... LOCK IN ShARE MODE加IS锁,SELECT ... FOR UPDATE加IX锁,意向锁的规则如下:
(1)事务在对表T中的记录获取S锁前,先要获取表T的IS锁或者更强的锁;
(2)事务在获取表T中记录的X锁前,先要获取表T的IX锁。
InnoDB的锁相容性矩阵:

 假如如果一个事务请求的锁模式与当前的锁兼容,InnoDB就将请求的锁授予该事务;反之,假如如果两者不兼容,该事务就要等待锁释放。意向锁只会阻塞其它事务对表的请求,例如,LOCK TABLES …WRITE,意向锁的主要目的是表明该事务将要或者正在对表中的记录加锁。使用封锁机制来进行并发控制,一个比较重要的问题就是死锁。
来看一个死锁的例子:
例1-1uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Session 1uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Session 2uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

mysql> CREATE TABLE t (i INT) ENGINE = InnoDB;
Query OK, 0 rows affected (0.22 sec)

mysql> INSERT INTO t (i) VALUES(1);
Query OK, 1 row affected (0.08 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT * FROM t WhERE i = 1 LOCK IN ShARE MODE;
------
| i    |
------
|    1 |
------
1 row in set (0.01 sec)

mysql>uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

 uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

 uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> DELETE FROM t WhERE i = 1;
等待…uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

mysql> DELETE FROM t WhERE i = 1;
等待…uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

 uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

 uQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transactiouQEAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!


标签:

分享到:

  网友投稿

注册时间:

网站:0 个   APP:0 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304411

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市