范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

MYSQL那点破事!索引SQL调优事务B树分表。

  大家好,我是Tom哥~
  为了便于大家查找问题,了解全貌,整理个目录,我们可以快速全局了解关于mysql数据库,面试官一般喜欢问哪些问题
  接下来,我们逐条来看看每个问题及答案
  MyISAM 和 InnoDB 的区别?
  答案:InnoDB 支持 事务、外键、聚集索引,通过MVCC来支持高并发,索引和数据存储在一起。InnoDB 不保存表的具体行数,执行 select count(*) from table  时需要全表扫描。而MyISAM 用一个变量保存了整个表的行数。
  InnoDB 最小的锁粒度是行锁,MyISAM 最小的锁粒度是表锁,并发能力低。MySQL 将默认存储引擎是 InnoDB
  mysql 锁有哪些类型?
  答案:mysql锁分为共享锁( S lock ) 、排他锁 ( X lock ),也叫做读锁和写锁。根据粒度,可以分为表锁、页锁、行锁。
  什么是间隙锁?
  答案:间隙锁是可重复读级别下才会有的锁,mysql会帮我们生成了若干左开右闭 的区间,结合MVCC和间隙锁可以解决幻读问题。
  如何避免死锁?
  答案:死锁的四个必要条件:1、互斥 2、请求与保持 3、环路等待 4、不可剥夺。合理的设计索引,区分度高的列放到组合索引前面,使业务 SQL 尽可能通过索引定位更少的行,减少锁竞争。 调整业务逻辑 SQL 执行顺序, 避免 update/delete 长时间持有锁的 SQL 在事务前面。 避免大事务,将大事务拆成多个小事务 以固定的顺序访问表和行。比如两个更新数据的事务,事务 A 更新数据的顺序为 1,2;事务 B 更新数据的顺序为 2,1。这样更可能会造成死锁。 在并发比较高的系统中,不要显式加锁,特别是是在事务里显式加锁。如 select … for update 语句,如果是在事务里(运行了 start transaction 或设置了autocommit 等于0),那么就会锁定所查找到的记录。 尽量用主键/索引去查找记录 优化 SQL 和表设计,减少同时占用太多资源的情况。比如说,避免多个表join,将复杂 SQL 分解为多个简单的 SQL。
  数据库的隔离级别?
  答案:读未提交、读已提交、可重复读(mysql的默认级别,每次读取结果都一样,但是有可能产生幻读)、串行化。
  Mysql有哪些类型的索引?
  答案:普通索引:一个索引只包含一个列,一个表可以有多个单列索引。 唯一索引:索引列的值必须唯一,但允许有空值 复合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并 聚簇索引:也称为主键索引,是一种数据存储方式。B+Tree结构,非叶子节点包含健值和指针,叶子节点包含索引列和行数据。一张表只能有一个聚簇索引。 非聚簇索引:不是聚簇索引,就是非聚簇索引。叶子节点只是存索引列和主键id。如果sql还要返回除了索引列的其他字段信息,需要回表,第一次索引一般是顺序IO,回表的操作属于随机IO。回表的次数越多,性能越差。此时我们推荐 覆盖索引
  什么是覆盖索引和回表?
  答案:
  1、覆盖索引,指的是在一次查询中,一个索引包含所有需要查询的字段的值,可能是返回值或where条件select buyer_id from order where money>100
  假如我们创建了一个(money,buyer_id)的联合索引,索引的叶子节点包含了buyer_id 的信息,则不会再回表 查询。
  2、回表,指查询时一些字段值拿不到,需要到主键索引B+树再查一次。
  Mysql的最左前缀原则?
  答案:即最左优先,在检索数据时从联合索引的最左边开始匹配,直到遇到范围查询(如:> 、< 、between、like等)
  例子:where a = 1 and b = 2 and c > 3 and d = 4 ,如果建立(a,b,c,d)组合索引,d是用不到索引的;如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。
  线上SQL的调优经验?
  答案:1、 slow_query_log  日志中收集到的慢 SQL ,结合 explain  分析是否命中索引。2、减少索引扫描行数,有针对性的优化慢 SQL。 3、建立联合索引,由于联合索引的每个叶子节点包含检索字段的信息,按最左前缀原则匹配后,再按其它条件过滤,减少回表的数据量。 4、还可以使用虚拟列和联合索引来提升复杂查询的执行效率。
  官方为什么建议采用自增id 作为主键?
  答案:自增id是连续的,插入过程也是顺序的,总是插入在最后,减少了页分裂,有效减少数据的移动。所以尽量不要使用字符串(如:UUID)作为主键。
  索引为什么采用B+树,而不用B-树,红黑树?
  答案:提升查询速度,首先要减少磁盘IO次数,也就是要降低树的高度。平衡二叉树、红黑树,都属于二叉树。时间复杂度为O(n),当表的数据量上千万时,树的深度很深,mysql读取时消耗大量 IO。另外,InnoDB引擎采用 页 为单位读取,每个节点一页,但是二叉树每个节点储存一个关键词,导致空间浪费。B-树,非叶子节点存储数据,占用较多空间,导致每个节点的 指针 少很多,无形增加了树的深度。B+树数据都存储在叶子节点,非叶子节点只存储 健值+指针 ,索引树更加扁平,三层深度可以支持千万级表存储。同时叶子节点之间通过链表关联,范围查找更快。更多内容,参考  mysql 一棵 B+ 树能存多少条数据?
  事务的特性有哪些?
  答案:ACID。原子性。一个事务中的操作要么全部成功,要么全部失败。 持久性。永久保存在数据库中。 一致性。总是从一个一致性的状态转换到另一个一致性的状态 隔离性。一个事务的修改在提交前,其他事务是感知不到的
  如何实现分布式事务?
  答案:1、流水任务,最终一致性,前提是接口要支持幂等性 2、事务消息 3、二阶段提交 4、三阶段提交 5、TCC 6、Seata 框架 7、更多内容,参考  如何解决分布式事务
  日常工作中,MySQL 如何做优化?
  答案:1、分页优化。比如电梯直达, limit 100000,10  先查找起始的主键id,再通过id>#{value} 往后取10条2、尽量使用 覆盖索引 ,索引的叶节点中已经包含要查询的字段,减少回表查询 3、SQL优化(索引优化、小表驱动大表、虚拟列、适当增加冗余字段减少连表查询、联合索引、排序优化、慢日志 Explain 分析执行计划)。 4、设计优化(避免使用NULL、用简单数据类型如int、减少 text 类型、分库分表)。 5、硬件优化(使用SSD 减少 I/O 时间、足够大的网络带宽、尽量大的内存)
  mysql 主从同步具体过程?
  答案:master主库,有数据更新,将此次更新的事件类型写入到主库的binlog文件中 主库会创建 log dump 线程 通知slave有数据更新slave,向master节点的 log dump线程请求一份指定binlog文件位置的副本,并将请求回来的 binlog 存到本地的Relay log  中继日志中slave 再开启一个 SQL 线程 读取Relay log 事件,并在本地执行redo 操作。将发生在主库的事件在本地重新执行一遍,从而保证主从数据同步
  什么是主从延迟?
  答案:指一个写入SQL操作在主库执行完后,将数据完整同步到从库会有一个时间差,称之为主从延迟。计算公式:主库生成一条写入SQL的binlog,里面会有一个时间字段,记录写入的时间戳 t1 binlog 同步到从库后,一旦开始执行,取当前时间 t2 t2-t1 ,就是延迟时间
  注意:不同服务器要保持时钟一致
  主从延迟排查方法?
  答案:通过 show slave status  命令输出的Seconds_Behind_Master 参数的值来判断
  为零:表示主从复制良好 正值:表示主从已经出现延时,数字越大,表示从库延迟越严重
  主从延迟要怎么解决?
  答案:看业务的接受程度。如果不能接受延迟,那么建议强制走主库查询 可以考虑引入缓存,更新主库后同步写入缓存,保证缓存的及时性 提升从库的机器配置,提高从库binlog的同步效率 缩短主、从库的网络距离,减少binlog的网络传输时间 一主多从,每个从库都启一个线程从主库同步 binlog,导致主库压力过大,可以采用 canal  增量订阅&消费组件,缓解主库压力。因为数据库必须要等到事务完成之后才会写入binlog,所以减少大事务的执行,尽量控制数量,分批执行。 5.6版本之前,从库是单线程复制,当遇到执行慢的sql时,就会阻塞后面的同步。5.7 版本后支持多线程复制,可以在从服务上设置 slave_parallel_workers 为一个大于0的数,然后把slave_parallel_type 参数设置为LOGICAL_CLOCK 为从库增加浮动IP,并通过脚本检测从库的延迟,延迟大于指定阈值时,将浮动IP切换至Master库,追平后再切换回从库。
  如果数据量太大怎么办?
  答案:mysql表的数据量一般控制在千万级别,如果再大的话,就要考虑分库分表。除了分表外,列举了面对海量数据业务的一些常见优化手段缓存加速 读写分离 垂直拆分 分库分表 冷热数据分离 ES助力复杂搜索 NoSQL NewSQL 更多内容,参考  海量数据业务有哪些优化手段?
  分表后ID如何保证全局唯一呢?
  答案:分库分表后,多张表共用一套全局id,原来单表主键自增方式满足不了要求。我们需要重新设计一套id生成器。特点:全局唯一、高性能、高可用、方便接入。UUID 数据库自增ID 数据库的号段模式,每个业务定义起始值、步长,一次拉取多个id号码 基于Redis,通过 incr 命令实现ID的原子性自增。雪花算法(Snowflake) 市面的一些开源框架,如:百度(uid-generator),美团(Leaf), 滴滴(Tinyid)等
  分表后可能遇到的哪些问题?
  答案:分表后,与单表的最大区别是有分表键sharding_key ,用来路由具体的物理表,以电商为例,有买家和卖家两个维度,以buyer_id 路由,无法满足卖家的需求,反之同样道理。如何解决?分买家库和卖家库,将买家库做为写库,保存完整的数据关系。同时将数据异构同步一份到卖家库,卖家库可以只存储 seller_id,order_id,buyer_id  等几个简单关系字段即可,以seller_id 作为分表键多线程扫描,分段查找,然后再聚合结果 另外也可以存到ES中,支持多维度复杂搜索
  如果您觉得文章对您有帮助,可以点赞评论转发支持一下~谢谢!
  原文链接:https://mp.weixin.qq.com/s?__biz=Mzg2NzYyNjQzNg==&mid=2247486281&idx=1&sn=2c0fc614dd94c93aa1172413fb340c6d

中欧瑞博调研安恒信息赣锋锂业等3只个股根据5月16日披露的机构调研信息,知名私募中欧瑞博对3家上市公司进行了调研,相关名单如下1)安恒信息(证券之星综合评级0。5星市盈率nan)个股亮点旗下安恒堡垒机与华为TaiSha目前购买埃安aion新能源车注意事项去年到今年埃安的交付能力导致部分车主下订单后3个月甚至半年都没到车。埃安的解释是疫情加上芯片产能不足。其实还有一个背后原因就是成本高企。旧订单低价如何挣钱的问题。所以去年订车的车主热门中概股盘前集体走高阿里巴巴涨超6,京东拼多多涨超5热门中概股盘前集体走高,阿里巴巴涨超6,京东涨超5,拼多多涨超5,哔哩哔哩涨超3,蔚来涨超4。5月16日,摩根大通集体上调阿里巴巴腾讯百度美团等中概股评级及目标价。此前因一篇研报引为什么日本的实体店能干翻电商行业,中国却相反呢?原因来了近些年来,电商行业在我国发展得非常迅猛,现在无论是年轻人,还是中老年人都喜欢在网上购物,主要是在网上购物既便宜,又能够送货到家。与之相比的是实体店显得有些萧条了,如果你走在城市的大苹果发布iOS15。5正式版iPhone信号更好了今天凌晨2点左右,苹果正是推送了iOS15。5正式版,版本号跟之前的iOS15。5RC版相同,除了一些常规的升级及修复bug之外,这次还升级了iPhone基带,改善了信号表现。苹果宝能新能源汽车成被执行人,执行标的约18。17万元乐居财经讯5月16日,企查查显示,宝能新能源汽车集团有限公司(以下简称宝能新能源汽车)被广东省广州市黄埔区人民法院列为被执行人,案号为(2022)粤0112执8354号,执行标的约行业点睛火爆!四川一锂矿起拍价335万元拍卖竞价已超1。24亿元行业高景气持续验证家里有矿是真的吃香。5月17日上午,智通APP获悉,在京东破产拍卖平台上,一场破产清算股权拍卖一开拍,便进入白热化状态。截至当日13时07分,这场标的物起拍价仅335万元的拍卖已吸603650彤程新材601868中国能建关键点位支撑位2。2元阻力位3。0元基本面公司拥有一批中国电力勘测设计工程建设及装备制造企业。涉及次新股水泥央企国资改革等概念。公司近年主营以及净利润增长稳健,云米科技宣布5月27日美股盘前发布2022年第一季度业绩金融界5月17日消息,中国物联网家科技公司云米科技今日宣布,公司将于2022年5月27日美股盘前发布2022年第一季度业绩报告。业绩数据发布后,云米科技公司管理层将于美国东部时间2TCLQ10GMiniLED电视新品发布王炸画质,新品首发价4499元随着科技的进步,行业出现了越来越多电视品牌,不乏一些手机厂商加入其中,但是真的说到电视品牌我们不得不提的厂商就包括了TCL,作为传统电视厂商,不仅有着稳定的供应链渠道基础,更重要的数字哨兵概念横空出世!数字哨兵概念股票一览表数字哨兵是一种具有快速核验健康码身份证核酸检测信息等功能的硬件设备。数字哨兵支持识别随身码身份证社保卡学生证和敬老卡,集人脸识别考勤测温扫码核验门禁等功能为一体,内置工业级主板,运
IPhone7plus性能之王1IPhone7plus上市已经4年多了,但现在还是有多人选择它,因为预算不多而又想用苹果。A10处理器和目前的2k以内安卓还要流畅,玩玩小游戏,刷刷抖音快手,日常使用足以应付,Ip苹果8p性能之王2为什么说iphone8p最后游戏之王,因为iphone8p是苹果最后发布的非全面屏苹果旗舰手机。内部主板非双层设计,散热比双层主板要好,所以在大型游戏体验中比iphonex和XS要iphone5s强劲性能2021了很多人都在问,6年前的苹果5s现在还能用吗?下面我带大家了解一下。系统方面苹果5S过了这么多年不更新系统的情况下依旧手机系统的流畅度很高,运行软件效果顺畅,观看视频不卡顿苹果SE2性能小钢炮大家好我是小妹畅聊数码这款机型因为是苹果为数不多的小屏旗舰,而且价格适中,所以吸引了不少消费者的关注。下面我们一起来看二代和一代的区别。苹果se和se2不管在外观拍照还是性能方面都沙漠玫瑰叶子发黄的原因和解决方法沙漠玫瑰是肉质根系,根系内可以存储很多的水分,也正是因为这个缘故,沙漠玫瑰就形成了能耐旱,却很怕积水的习性。浇水过多,它的根系就很容易出现腐烂。当根系腐烂之后,对养分的吸收能力减弱韩国人支持三星,中国民众排队购买苹果,指责华为手机价格昂贵?关于这些个问题呢?我们可以一一做出一个基本分析,以便各位看官朋友们学习和交流,至于大家各自的想法,我不能决定,亦不会强行去改变,但是我们可以通过交流来扩大对事情的分析和认知。如果大把大屏随时带在身旁,全场景使用峰米X1激光投影仪无忧体验年轻人潮流个性,独立有朝气,工作中善于动脑有拼劲儿,平时喜欢旅行聚会,生活中也是丰富多彩。说了这么多年轻一族的特点,也该我们体验的大主角登场了小米生态链企业,激光微投品类开创者峰米高端的优秀只是底线,卡萨帝全面走向场景赛道作者易牟原创深眸财经(chutou0325)高端家电的天花板在哪里?近几年,随着产业升级消费升级的热潮,高端家电迎来营收的爆发,其确定性趋势也获得资本市场的认可。此时,坐稳高端市场半年报里的三翼鸟场景发力生态收入增幅53作者易牟原创深眸财经(chutou0325)8月30日,海尔智家公布了2021半年报。意料之中的是,海尔智家海外和高端板块增长依然强劲,而更加受到外界关注的,则是旗下场景品牌三翼鸟滴水观音的冬季养护技巧可选用园土五份,腐叶土3份,珍珠岩一份,煤渣一份。滴水观音喜欢疏松肥沃的土壤,一到两年要进行一次换土。天气渐渐变冷,浇水频率要减少。滴水观音耐旱怕水涝,温度逐渐变低的情况下,浇水过虎尾兰新苗的上盆技巧虎尾兰属于多年生肉质草本植物,喜温暖干燥通风良好的半阴环境,配土适宜采用疏松透气的沙壤土腐殖土以及泥炭椰糠珍珠岩配成的混合营养土,潮土上盆后放在散光环境下服盆即可。网购的虎尾兰基本