魏小言
BAT资深工程师,Cloud Native 拥护者,敏捷实践者,坚守开发一线打磨工匠技艺的架构师。对基础架构和微服务有丰富的研究和实践。微信群请私信博主
展开
-
刨析 MySQL 三大日志:binlog、redo log 和 undo log
刨析 MySQL 三大日志:binlog、redo log 和 undo log日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息。MySQL日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。作为开发,我们重点需要关注的是二进制日志(binlog)和事务日志(包括redo log和undo log),本文接下来会详细介绍这三种日志。关注我 code 杂坛 ,不迷路,了解更多...binlogbinlog用于记录数据库执行的写入性操作(不包括查原创 2022-03-24 15:02:27 · 182 阅读 · 2 评论 -
数据库分库分表可扩展及数据倾斜/热点问题
数据库如何分库分表提起分库分表,对于大部分服务器开发来说,其实并不是一个新鲜的名词。随着业务的发展,我们表中的数据量会变的越来越大,字段也可能随着业务复杂度的升高而逐渐增多,我们为了解决单表的查询性能问题,一般会进行分表操作。同时我们业务的用户活跃度也会越来越高,并发量级不断加大,那么可能会达到单个数据库的处理能力上限。此时我们为了解决数据库的处理性能瓶颈,一般会进行分库操作。不管是分库操作还是分表操作,我们一般都有两种方式应对,一种是垂直拆分,一种是水平拆分。关于两种拆分方式的区别和特点,原创 2022-03-22 14:02:24 · 1969 阅读 · 10 评论 -
速成大神小技巧——Mysql批量|DUPLICATE高级用法
文章目录数据入库单条入库批量入库数据冲突入库冲突Replace & Deplicate异同Q&A附录此系列为速成大神系列,掌握这些小技巧,让你在人群中脱颖而出!数据入库单条入库一般初级或简单场景,单条数据入库,SQL如下:insert into user_info (user_id,user_name,status,years)values (123,'你好’,1,15)或者insert into user_info set user_id=123,user_name=“你原创 2021-05-26 17:13:24 · 4991 阅读 · 18 评论 -
MySQL技术内幕:SQL编程
简述本文记录一些关于sql语言的最根本的基础,堪称灵魂内幕。适用人群:适合对sql熟练使用的rd或者dba学习,功力深厚的大牛可以略读。方式将以小Tip、小问题的形式抛出知识点,进一步扩展。Q&Asql是一种语言?还是工具?和java、c++啥区别?java是面向对象,php面向过程/对象,c++/c面向过程,sql呢?sql引擎是啥?为啥经常被忽略?sql语句执行的...原创 2019-12-06 10:33:33 · 743 阅读 · 1 评论 -
SQL中drop、truncate和delete的应用场景
最近在做的项目中需要对表进行重用,准确地说应该是把数据表中地数据清掉,但表结构及索引等表属性都不变。针对这个场景,这里简单区分下SQL中常见的drop、truncate、delete;已经了解的同学可以略过。从操作性质上分: SQL有DDL、DCL、DML三种: delete属于DML(数据库操作语言):操作原数据会被放置到rollback segement 中,可进行回...原创 2018-09-04 00:02:35 · 1980 阅读 · 0 评论 -
mysql中一条insert语句批量插入多条记录
最近在项目中,需要对数据进行插表操作,由于数据量较大,按照一般的insert into将会有for循环操作,但所在公司部门产品流量大,对性能要求高;所以选择批量插入;下面将简单介绍一下最终选择批量SQL过程,这节可能会是你成为大牛的基石: 之前使用: i...原创 2018-10-30 17:54:56 · 31959 阅读 · 0 评论 -
MySQL的Limit详解
Top子句:TOP 子句用于规定要返回的记录的数目。对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。在SQL Server数据库中语法为: SELECT TOP number|percent column_name(s) FROM table_name但是并非所有的数据库系统都支持 TOP 子句,比如Oracle和MySQL,它们有等价的语法。在Oracle数据库中语法为: ...转载 2019-01-04 09:50:03 · 226 阅读 · 0 评论 -
MySQL索引原理及慢查询优化
背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易...转载 2019-01-25 10:33:17 · 188 阅读 · 0 评论 -
url最大长度
最近在库中存储一些url,针对字段长度,这里简单说下url最大的长度,具体情况根据业务场景而定。HTTP RFC2616协议没有规定URL的最大长度,但规定服务器如果不能处理太长的URL,就得返回414状态码(Request-URIToo Long)。HTTP RFC2616协议指出,某些旧的客户端或代理,可能无法处理超过255个字节的URI。既然HTTP协议没有规定URL的最...转载 2019-01-22 11:34:02 · 4768 阅读 · 0 评论 -
Mysql加锁分析
最近逛社区发现精华贴,转过来共同学习! 1 背景 11.1 MVCC:Snapshot Read vs Current Read 21.2 C...转载 2019-04-26 16:52:37 · 284 阅读 · 0 评论 -
OSC 在线更改表结构
随着业务的发展,更改表结构变的越来越常见。一般情况下,我们通过alter table 之类的DDL语句就可以完成。然而当执行alter table 语句时,数据库会对整个实例加锁,阻塞业务的所有操作,当线上数据表数据量非常庞大时,阻塞时间将会非常长,这对于我们是无法容忍的。因此我们不能简单粗暴地对原表执行alter table语句。一、OSC操作在线更改表结构有两种方法:1、主从切换。即先...原创 2019-09-17 09:53:28 · 298 阅读 · 0 评论 -
数据库隔离级别实现原理
昨晚和以为前辈聊天,聊到Mysql的引擎innodb默认的事务隔离级别是REPEATABLE READ(可重复读);在Oracle中默认的事务隔离级别是提交读(read committed)。那么,问题来了,在Mysql中的隔离级别是怎么实现的呢? 关于数据库数据隔离级别在之前的博客中总结过:https://blog.csdn.net/qq_34417408/article/details/79...原创 2018-04-25 11:31:23 · 874 阅读 · 0 评论 -
Mysql 中的sql_safe_update
在应用mysql workbeach 进行表更新操作时遇到这个错误: 0 6 18:45:28 delete from wangba.user where Username=”张小寒” Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE原创 2017-07-01 21:35:16 · 1453 阅读 · 0 评论 -
update on duplicate key update
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/23557915,转载请注明。 向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是insertOrUpdate操作。这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求,如Oracle的merge语转载 2017-08-24 20:35:29 · 1184 阅读 · 0 评论 -
数据库索引的运行原理及基本结构
索引:是一种独立、物理的存储数据表一列或多列数值的一个有序的数据结构。(聚簇索引,是物理顺序和键值顺序一致,所以是一张表只能建立一个聚簇索引;非聚簇索引则反之。)同时包涵索引数据,还有指向列数据的数据表的指针表单 索引建立目的主要是提高数据的检索速度,当检索时,通过索引找到相应的键值,然后根据键值的指针找到对应的行,完成检索。 简单的说,索引就像是书的目录,通过查找页码,找到想要阅读的信息。主要原创 2017-09-20 10:11:58 · 685 阅读 · 1 评论 -
Hibernate缓存机制浅述
**Hibernate**作为**JPA**规范的其中一种**ROM框架**实现,在轻量级企业应用开发中有一定的应用份额。下面介绍下关于其缓存机制:缓存目的:在数据量很大时,请求数据库物理数据过多,会产生响应延迟等问题,影响系统整体性能。通过缓存减少访问次数,提高性能。Hibernate缓存分为:一级缓存、二级缓存区别:一级缓存中,存储修改、访问相对频繁,且多线程公用,且无并发的数据资源原创 2017-09-30 14:46:09 · 323 阅读 · 1 评论 -
数据库表间的联系
第一部分、查询理论连接查询方式有:内连接、外连接(左连接、右连接、全连接)、交叉连接左连接和右连接的区别:左连接以左表为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配的数据则显示相应字段的数据,如果不匹配,则显示为NULL;右连接刚好相反。全连接就是先以左表进行左外连接,然后以右表进行右外连接。说明:所谓的基准,就是以某张表的限制条件查询条件为准!具体如下:一、内连接内连接转载 2017-09-30 16:03:55 · 755 阅读 · 0 评论 -
存储过程浅述
为什么要用存储过程 几个去 IBM 面试的兄弟回来抱怨:去了好几个不同的 IBM 项目组,几乎每个面试官问到数据库的时候都要问用没用过存储过程,烦人不?大家去面的程序员,又不是 DBA,以前的项目都没有用到存储,不照样运行的好好的?存储过程真的那么重要吗,它到底有什么好处呢?笔者认为,存储过程说白了就是一堆 SQL 的合并。中间加了点逻辑控制。但是存储过程处理比较复杂的业务时比较实用。比如说,转载 2017-10-05 11:12:01 · 755 阅读 · 0 评论 -
MySQL分库分表
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。单库多表 随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间所有的读写操作只能等待。 可以通原创 2017-12-28 17:59:06 · 220 阅读 · 1 评论 -
binlog实现并发复制过程slave线程数
首先梳理下传统MySQL/MariaDB主备复制基本原理: 主从复制通过三个线程来完成,在master节点运行的binlog dump的线程,I/O线程和SQL线程运行在slave 节点 &nbs转载 2018-03-30 15:17:05 · 1162 阅读 · 0 评论 -
数据库性能优化详解
1.数据库访问优化法则要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬盘可能会是瓶颈点,为什么这些一般的工作我们能快速确认瓶颈点呢,因为我们对这些慢速设备的性能数据有一些基本的认...转载 2018-04-01 15:26:52 · 394 阅读 · 0 评论 -
数据库的四种隔离级别
数据库的四种隔离级别 数据库的事务操作其实就是一组原子性的操作,要么全部操作成功,要么全部操作失败。 比如说我需要对外销售1张电影票,且登记一下销售信息到另一个表,至少需要以下3个步骤 1.查询电影票数量是否满足销售1张电影票 SELECT remain_count FROM cinema WHERE film_id = 123456789; 2.更新电影...转载 2018-04-13 23:20:27 · 248 阅读 · 0 评论 -
数据库浅谈
数据库基本sql语句:(CRUD)1、数据库基本sql语句: 2、连接介绍: 全连接:inner join 左连接:left join 右连接:right join select *from user right join userTest on user.id=userTest.id; select *from user left join userTest on user.id=us原创 2017-07-01 21:27:44 · 321 阅读 · 0 评论