06Mysql数据库

Mysql数据库

一、基础

1.1、事务的隔离级别
  • 读未提交:如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其他事务读此行数据。解决了丢失修改
  • 读已提交:如果一个读事务允许其他事务读写,如果是写事务则禁止其他事务访问数据。解决了丢失修改和脏读
  • 可重复读:在一个事务内,多次读同一数据,在这个事务还没结束时,其他事务不能访问该数据(包括读写)。避免了丢失修改,不可重复读和脏读
  • 可串行化:要求事务一个接一个执行,最高级别
1.2、并发事务的问题
  • 丢失修改:两个事务更新同一数据,最后一个事务的更新会覆盖掉前面事务的更新,导致更新数据的丢失
  • 脏读:一个事务读取了另一个事务没有提交的数据
  • 不可重复读:在同一事务中,读取同一数据得到不同的内容
  • 幻读:一个事务执行中读取到另一事务已提交的插入数据或删除数据消失。
1.3、查询连接(join)
  • INNER JOIN:如果查询的表中至少一个匹配,则返回行,返回几个表的交集

    select <> from Tab A INNER JOIN Tab B ON A.Key=B.Key
    
  • LEFT JOIN:关键字会左表 那里返回所有的行,即使在右表中没有匹配的行。

    select <> from Tab A LEFT JOIN Tab B ON A.Key=B.Key
    
    • 注意还有一种情况是不要交集:

      select <> from Tab A LEFT JOIN Tab B ON A.Key=B.Key where B.Key=null

  • RIGHT JOIN:关键字会右表那里返回所有的行,即使在左表 中没有匹配的行。

    select <> from Tab A RIGHT JOIN Tab B ON A.Key=B.Key
    
    • 注意还有一种情况是不要交集:

      select <> from Tab A RIGHT JOIN Tab B ON A.Key=B.Key where B.Key=null

  • FULL JOIN:只要查询的某个表存在匹配,FULL JOIN 关键字就会返回行。

    select <> from Tab A FULL JOIN Tab B ON A.Key=B.Key
    
  • 注意:Mysql中没有FULL JOIN,使用UNION,UNION定义:UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

1.4、两种存储引擎对比
  • MyIASM不支持事务,而InnoDB支持事务
  • MyIASM锁的粒度是表级的,而InnoDB支持行级锁
  • MyIASM支持全文类型索引,而InnoDB不支持全文索引
  • MyIASM相对简单,效率上要优于InnoDB,小型应用可以考虑使用MyIASM

二、索引

2.1索引
  • 索引是帮助MySQL高效获取数据的数据结构,排好序的快速查找的数据结构,目的是提高查找效率
  • 索引会影响where后边的查找和order By后边的排序
2.2索引分类
  • 单值索引:即一个索引只包含单个列,一个表可以有多个单列索引
  • 唯一索引:索引列的值必须唯一,但允许有空值
  • 复合索引:即一个索引包含多个列
2.3建立索引情况(BTree索引)
  • 主键自动建立唯一索引
  • 频繁作为查询条件的字段应该创建索引
  • 查询中与其他表关联的字段,外键关系建立索引
  • 频繁更新的字段不适合创建索引
  • where条件用不到的字段不创建索引
2.4索引失效
  • 最好全值匹配;
  • 最左前缀法则:如果索引了多列,查询从索引的最左前列开始,且不能跳过索引中的列;
  • 不在索引列上做任何操作(计算,函数,类型转换),会导致索引时校而转向全表扫描;
  • 存储引擎不能使用索引中范围条件右边的列,即范围之后全失效;
  • 尽量使用覆盖索引,只访问索引的查询(索引列和查询列一致),减少selec *;(覆盖索引:建索引的列和要查询的列相同,例如索引列是c1,c2,select 查询的也是c1,c2;)
  • MySQL在使用不等于的时候无法使用索引会导致全表扫描;
  • is null,is not null 也无法使用索引;
  • like 以通配符开头(’%aa‘)索引会失效,变成全表扫描;
  • 字符串不加单引号,索引失效;
  • 少用 or,用它来连接时候会索引失效

三、锁

3.1分类
  • 对数据操作类型:读锁(共享锁)和写锁(排它锁)
    • 读锁:针对同一份数据,多个读操作可以同时进行
    • 写锁:当前写操作没有完成前,它会阻断其他写锁和读锁。
  • 对数据操作 的粒度:表锁和行锁
3.2锁粒度
  • 表锁

    • 特点:偏向MyISM存储引擎,开销小,加锁块;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
  • 行锁

    • 特点:偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率最低,并发度最高。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值