首页 > 数据库 >MySQL数据库

MySQL数据库

时间:2023-10-06 21:55:38浏览次数:53  
标签:语句 数据库 索引 InnoDB MyISAM MySQL 事物

1. 事物的四大特性和隔离级别

原子性:不可分割的操作单元,要么全部成功,要么回滚。
一致性:如果执行事物之前数据库是一致的,那么执行后还是一致的。
隔离性:事物操作之间彼此独立和透明,互不影响。
持久性:事物一旦提交,其结果就是永久的。
未提交读:允许脏读,其他事物只要修改了数据,即使未提交,本事物也能看到修改后的数据值。
提交读:只能读取到已提交的数据。
可重复读(innoDB默认):无论其他事物是否修改并提交了数据,这个事物中的数据不受影响。
串行读:完全串行化的读,每次读都要获得锁,读写相互都会阻塞。

2. MySQL优化相关

    使用更小的整数类型、尽可能的定义字段为not null(否则会导致索引复杂)、
    只创建需要的索引、分库分表。
    使用explain检查复杂SQL语句、LIMIT语句尽量要跟order by或distinct
    插入多条数据时使用单条INSERT语句。

3. MySQL存储引擎InnoDB和MyISAM的区别

    InnoDB支持事物,MyISAM不支持。
    InnoDB支持外键,MyISAM不支持。
    InnoDB是聚集索引,MyISAM是非聚集索引。索引和数据文件是分离的。
    InnoDB必须要有主键(没有会自己找或创建),MyISAM可以没有。
    InnoDB不保存表的行数,MyISAM用了一个变量保存表的行数。
    InnoDB支持表、行级锁 默认行级锁,MyISAM只支持表级锁。

4. MySQL在哪些情况下不使用索引

    like查询使用%开头不能使用索引,但用%结尾的可以使用索引。
    where语句中使用<>或!=。
    where语句中使用or,且没有把or中的所有字段加上索引。
    where语句中对字段表达式操作。
    where语句中使用NOT IN。使用简单的IN会使用索引。

5. MySQL分库分表策略

    垂直切分:某个表字段过多,可以将不常用或字段长度较大的字段拆分出去到扩展表中。
    水平切分:分为库内分表和分库分表,是根据表内数据的逻辑关系,按照不同的条件分散到多个数据库或表中。

标签:语句,数据库,索引,InnoDB,MyISAM,MySQL,事物
From: https://www.cnblogs.com/wyl010926/p/17745126.html

相关文章

  • mysql索引失效
    1.索引失效1.1索引失效常见原因我们先来看一张图,总结了常见的索引失效的原因 1.2索引失效常见误区 1.3索引设计的几个建议 ......
  • SQLServer数据库三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式介绍
    SQLServer数据库三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式介绍  1.Simple简单恢复模式,Simple模式的旧称叫”Checkpointwithtruncatelog“,其实这个名字更形象,在Simple模式下,SQLServer会在每次checkpoint或backup之后自动截断log,也就是丢弃所有的in......
  • openGauss学习笔记-91 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-M
    openGauss学习笔记-91openGauss数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT外部支持工具为了支持MOT,修改了以下外部openGauss工具。请确保使用的工具是最新版本。下面将介绍与MOT相关的用法。有关这些工具及其使用方法的完整说明,请参阅《工具与命令参考》。91......
  • 数据库的隔离级别
    数据库的隔离级别是指在多个并发事务同时对数据库进行读写操作时,各个事务之间的隔离程度。常见的数据库隔离级别包括:读未提交(ReadUncommitted):最低的隔离级别,允许一个事务读取另一个事务尚未提交的数据。可能会出现脏读(DirtyRead)问题,即读取到未提交的数据。读已提交(ReadCommitted......
  • 缓存(Redis)与数据库(MySQL)一致性如何解决?
    【零】场景预设我们以12306购票系统为例,结合购票场景完成缓存与数据库双写一致性的相关问题解决【一】业务背景为了满足用户对一趟列车不同站点不同座位类型的余量查询需求,我们采取了一种优化方案。我们将这些余量信息存储在缓存中,以便用户可以快速查询。然而,在用户创建......
  • 数据库事务和隔离级别的解析
    什么是数据库中的事务,可以说事务就是一组原子性的SQL查询,独立的工作单元。我们的事务内的语句,要么全部执行成功,要么全部执行失败!事务要满足ACID特性,可以通过Commit提交一个事务,也可以使用Rollback进行回滚!下面我们就介绍一下事务的ACID特性。ACID特性原子性(actomicity)一个事......
  • WIN11 安装 SQL Server 2019,SQLSERVER2022, MYSQL 8.0 ,Docker,Mongodb失败故障分析
    最近研究数据库性能调优遇到各种数据库各种装不上,不知道熬了多少根软白沙,熬了多少颗张三疯,问了多少AI,查了多少网页,熬了两天,终于搞明白了一件事:那就是WIN11ONARM(因为拿的是MACPROM2做.NET平台开发安装)SQLSERVER2019,SQLSERVER2022,MYSQL8.0,Docker,Mongodb失败故障分析,最终极......
  • 如何远程修复损坏的mysql数据库
    当mysql数据库出现错误需要修复时,可以用mysqlcheck这个命令修复点击开始-运行,输入c:\mysqlcheck -r -u用户名 -p数据库密码 -h服务器地址 数据库名回车即可,如:c:\mysqlcheck -r -udemo -pdemo -h218.89.170.62 demo......
  • 如何连接mysql数据库?
    下面的例子是用PHP4连接一个mysql数据库操作的演示<?    /*本例是用PHP4连接一个mysql数据库操作的演示,    实现连接打开一个库,并读取数据的基本功能。    */?><HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"><style type="text/c......
  • 清空MYSQL数据库的简单办法
    直接在控制面板中点“清空mysql数据库”即可。 也可以用如下办法:保存为***.php运行就OK了<?php$user="";//数据库用户名$password="";//数据库密码$db_name="";//数据库名$link=mysql_connect("localhost:3306",$user,$password);mysql_select_db("$db_name......