mysql 查询原理
第一步:应用程序把查询SQL语句发给服务器端执行
我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理。
第二步:服务器解析请求的SQL语句
1.SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实,往往一个查询语句在第一次运行的时候需要执行特别长的时间,但是如果你马上或者在一定时间内运行同样的语句,会在很短的时间内返回查询结果。
第三步:语句执行
服务器对SQL语句解析完成后,服务器才会知道这条语句到底代表了什么意思,接下来才会真正的执行SQL语句。
pymysql 原理
就根据程序的字符串拼接name='%s',我们输入一个xxx' -- hello,用我们输入的xxx加'在程序中拼接成一个判断条件name='xxx' -- hello'
最后那一个空格,在一条sql语句中如果遇到select * from t1 where id > 3 -- and name='ax';则--之后的条件被注释掉了
#1、sql注入之:用户存在,绕过密码
ax' -- 任意字符
#2、sql注入之:用户不存在,绕过用户与密码
xxx' or 1=1 -- 任意字符
mysql分表原理
MySQL 的分表原理是将单张表按照一定的规则进行水平切分成多个小表,以提高数据查询效率。
这些小表通常基于数据的某个维度(例如时间、地理位置、用户 ID 等)进行划分,使得相同维度的数据存储在同一表中,从而减少了表的行数,提高了查询效率。MySQL 支持多种分表方式,例如基于模运算的规则分表、基于聚簇排序的规则分表等。此外,MySQL 还支持主键约束和外键约束等,以确保数据的完整性和一致性。
mysql写入数据过程原理
1. 客户端向MySQL服务器发送写入数据的请求,请求中包含要写入的数据内容和写入的表名。
2. MySQL服务器接收到客户端的请求后,先检查写入的表是否存在,以及是否有写入权限等。
3. 如果表存在且有写入权限,MySQL服务器会将数据写入到磁盘上的临时文件中,而不是直接写入到表中,这是因为MySQL使用了类似缓存的机制,将写入数据先缓存在临时文件中,等到缓存达到一定大小或时间到达一定长度时,再一次性地将数据写入表中,这样可以提高写入效率。
4. 在写入临时文件时,MySQL服务器还会对数据进行一些校验和处理,如检查数据的完整性、约束条件等,确保写入的数据符合表的定义和约束条件。
5. 当缓存满足一定条件时,MySQL服务器就会将数据写入到表中,这时会对表进行锁定,防止其他用户在写入数据时对表进行修改。
6. 在将数据写入到表中之前,MySQL还需要对数据进行一些操作,如检查是否有唯一性约束、更新索引等,确保数据的一致性和正确性。
7. 最后,MySQL服务器将写入数据的结果返回给客户端,客户端根据结果进行相应的处理,如显示成功或失败的消息等。
以上就是MySQL写入数据的主要过程,其中包含了一系列的校验、处理和优化操作,保证了数据的正确性和可靠性。
还没有评论,来说两句吧...