随笔分类 - MySQL
摘要:假设磁盘每秒可以做100个随机I/O操作,并且可以完成每秒10MB的顺序读取(这大概是消费级磁盘现在能达到的水平)。如果每行100字节,随机读每秒可以读100行(相当于每秒10000字节=10KB),相比之下顺序读每秒读50000行(50MB/100B=50000),是随机读取的5000倍,或者几个
阅读全文
摘要:1、操作系统4KB(在x86架构上通常是这样) 2、InnoDB数据页\索引页默认大小16KB 3、线程缓存(每个缓存线程或者休眠的缓存,通常使用256KB左右内存)
阅读全文
摘要:在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,第一反应是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql中有 ON DUPLICATE KEY UPDATE一步就可以完成,感觉实在是太方便了, 该语句是基于唯一索引或主键使
阅读全文
摘要:mysql常用的hint对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法。同样,在mysql里,也有类似的hint功能。下面介绍一些常用的。强制索引 FORCE INDEX SELECT * FROM TABLE1 FORCE INDEX
阅读全文
摘要:EXPLAIN执行计划中type字段分为以下几种: ALL INDEX RANGE REF EQ_REF CONST,SYSTEM NULL 自上而下,性能从最差到最好 type = ALL,全表扫描,MYSQL扫描全表来找到匹配的行 (因为film表中rating不是索引) mysql> expl
阅读全文
摘要:来看看手册中关于 OPTIMIZE 的描述: 原始数据 1,数据量 mysql> select count(*) as total from ad_visit_history; + + | total | + + | 1187096 | //总共有118万多条数据 + + 1 row in set
阅读全文
摘要:如果有同学看完上一篇关于MySQL文章,文末留有两个很开放的问题,如有兴趣可以在脑袋里想想。本文也会试着回答这两个问题,希望能给你一些参考。现在可以思考一个问题,如果数据量非常大的情况下,您根据业务选择了合适的字段,精心设计了表和索引,还仔细的检查了所有的SQL,并确认已经没什么问题,但性能仍然不能
阅读全文
摘要:Schema:表的模式; 设计数据的表,索引,以及表和表的关系 关系模型图: Schema关系到应用程序功能与性能 满足业务功能需求 同性能密切相关 数据库扩展性 满足周边需求(统计,迁移等) 关系型数据库修改Schema经常是高危操作 Schema设计要体现一定的前瞻性 完全由开发者主导的Sche
阅读全文
摘要:B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即
阅读全文
摘要:说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重
阅读全文
摘要:Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。- 事务的原子性(Atomicity)事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发生了错误,要回
阅读全文
摘要:分表和分区的区别: 一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例 二,m
阅读全文
摘要:分区 分区就是把一个数据表的文件和索引分散存储在不同的物理文件中。 mysql支持的分区类型包括Range、List、Hash、Key,其中Range比较常用: RANGE分区:基于属于一个给定连续区间的列值,把多行分配给分区。 LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹
阅读全文
摘要:实体:表; 属性:表中的数据(字段); 关系:表与表之间的关系; 数据库设计三大范式(重点): 第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性; 例如:userInfo:山东省烟台市 131777368781 userAds:山东0省烟台市 use
阅读全文
摘要:先来就库存超卖的问题作描述:一般电子商务网站都会遇到如团购、秒杀、特价之类的活动,而这样的活动有一个共同的特点就是访问量激增、上千甚至上万人抢购 一个商品。然而,作为活动商品,库存肯定是很有限的,如何控制库存不让出现超买,以防止造成不必要的损失是众多电子商务网站程序员头疼的问题,这同时也是 最基本的
阅读全文
摘要:做电商网站,经常会有各种秒杀和热门商品,所以高并发的处理一直是电商最重要的事情。这里记录下当初自己是如何处理的 写在前面: 1、本文设计到的并发处理均是针对纵向,不针对横向扩展,即只设计从PHP层面到数据库层面的处理,不涉及多台服务器,集群、大带宽等的横向设计。 2、本文中涉及到的高并发并不是淘宝京
阅读全文
摘要:什么是事务 事务是指由一系列数据库操作组成的一个完整的逻辑过程,这个过程中的所有操作要么都成功,要么都不成功。比如:常见的例子就是银行转账的例子,一次转账操作会包含多个数据库操作,而这些数据库操作需要放到一个事务当中,保证其要么都成功,要么都不成功。 什么是ACID ACID是事务的四个特性,指的是
阅读全文
摘要:系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。希望通过这篇文章的介绍,能学会Mycat的使用
阅读全文
摘要:1.非分片字段查询 Mycat中的路由结果是通过分片字段和分片方法来确定的。例如下图中的一个Mycat分库方案: · 根据 tt_waybill 表的 id 字段来进行分片 · 分片方法为 id 值取 3 的模,根据模值确定在DB1,DB2,DB3中的某个分片 如果查询条件中有 id 字段的情况还好
阅读全文
摘要:1. 普通青年的索引使用方式 假设我们有一个用户表 tb_user,内容如下: 执行SQL语句: 默认情况下,MySQL需要遍历整张表,才能找到符合条件的记录。如果在age字段上建立索引,那么MySQL可以很快找到所有符合条件的记录(索引本身通过B+树实现,查起来很快。简单起见,想象一下二分查找和遍
阅读全文

浙公网安备 33010602011771号