服务端指南 数据存储篇 | MySQL(09) 分库与分表带来的分布式困境与应对之策 - 掘金
随着用户数的不断增加,以及数据量的不断增加,通过分库与分表的方式提高查询性能的同时,带来了一系列分布式困境。 原文地址:服务端指南 数据存储篇 | MySQL(09) 分库与分表带来的分布式困境与应对之策博客地址:http://blog.720ui.com/ ...
中国移动 MySQL 数据库优化最佳实践 - 后端 - 掘金
数据研发工程师现任中国移动杭州研发中心数据研发工程师,擅长MySQL故障诊断,性能调优,MySQL高可用技术,曾任中国电信综合平台开发运营中心DBA开源数据库MySQL比较容易碰到性能瓶颈,为此经常需要对MySQL数据库进行优化,而MySQL数据库优化需要运维...
MySQL 索引及查询优化总结 - 后端 - 掘金
作者 | 谢庆玲编辑 | 顾乡 文章《MySQL查询分析》讲述了使用MySQL慢查询和explain命令来定位mysql性能瓶颈的方法,定位出性能瓶颈的sql语句后,则需要对低效的sql语句进行优化。本文主要讨论MySQL索引原理及常用的sql查询优化。 一个...
关系数据库 SQL 之高级数据查询 - 后端 - 掘金
前言 接上一篇关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询,主要是关系型数据库基本数据查询。包括子查询、分组查询、聚合函数查询、模糊查询,...
MySQL Innodb 事务隔离级别 - 后端 - 掘金
在Mysql中,事务主要有四种隔离级别,今天我们主要是通过示例来比较下,四种隔离级别实际在应用中,会出现什么样的对应现象。 Read uncommitted (未提交读) ...
大众点评订单系统分库分表实践 - 后端 - 掘金
背景 原大众点评的订单单表早就已经突破两百G,由于查询维度较多,即使加了两个从库,优化索引,仍然存在很多查询不理想的情况。去年大量抢购活动的开展,使数据库达到瓶颈,应用只能通过限速、异步队列等对其进行保护;业务需求层出不穷,原有的订单模型很难满足...
建立索引的原则 - 以 innodb 为例 - 后端 - 掘金
一、写在前面 随着开发、测试任务进入尾声,大家都在整理一些项目发布前的一些准备工作,其中一个重要的工作就是为之前写的一些sql语句建立索引,这高并发、高访问量的环境下是非常有必要的,建立一个好的索引能够极...
MySQL 处理海量数据时的一些优化查询速度方法 - 后端 - 掘金
在参与实际项目中,当 MySQL 表的数据量达到百万级时,普通的 SQL 查询效率呈直线下降,而且如果 where 中的查询条件较多时,其查询速度无法容忍。想想可知,假如我们查询淘宝的一个订单详情,如果查询时间高达几十秒,这么高的查询延时,任何用户都会抓狂。因...
深入分析事务的隔离级别 - 后端 - 掘金
在 DBMS 中,事务保证了一个操作序列可以全部都执行或者全部都不执行(原子性),从一个状态转变到另外一个状态(一致性)。由于事务满足持久性,所以一旦事务被提交之后,数据就能够被持久化下来,又因为事务是满足隔离性的,因此当多个事务同时处理同一个数据的时候,多个...
NoSQL 和 SQL 的选用 - 掘金
专栏 | 九章算法网址 | www.jiuzhang.com NoSQL 有分很多种,其中key-value NoSQL (Redis, MemcacheD, etc) 的选用相对比较清楚些,大多是当后端Data storage的cache层来用。这篇主要想...
开始,数据库设计 - 后端 - 掘金
前言 还记得刚毕业时去面试,面试官问我,为什么要有数据库?感觉从刚开始接触开发时就开始接触数据库,从来没想过这个问题,突然被问到竟有点灯下黑的感觉。今天来回答这个问题,我可能会说:数据库是按照数据结构来组织、存储和管理数据的仓库。数据库具有高度的物理独立性和一...
最简大数据Redis-3.2.8 - 掘金
0.0 前言 NoSQL,泛指非关系型数据库。不是NO-SQL,而是NOT-ONLY-SQL,不要把NoSQL数据库和关系型数据库对立起来,二者有不同的应用场景,目前来看NoSQL想完全取代关系型数据库不太可能。打算讨论三种NoSQL数据库。 键值类 - R...
《SQL 必知必会》学习笔记 - 后端 - 掘金
基本常识 去掉返回结果空格 两边都去掉:TRIM 去掉左边:LTRIM 去掉右边:RTRIM ...
我必须得告诉大家的 MySQL 优化原理 - 后端 - 掘金
说起MySQL的查询优化,相信大家收藏了一堆奇淫技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建...
HTML5 进阶系列:indexedDB 数据库 - 掘金
前言 在 HTML5 的本地存储中,有一种叫 indexedDB 的数据库,该数据库是一种存储在客户端本地的 NoSQL 数据库,它可以存储大量的数据。从上篇:HTML5 进阶系列:web Storage ,我们知道 web Storage 可以方便灵活的在本...
微信客户端 SQLite 数据库修复实践 - iOS - 掘金
1、前言 众所周知,微信在后台服务器不保存聊天记录,微信在移动客户端所有的聊天记录都存储在一个 SQLite 数据库中,一旦这个数据库损坏,将会丢失用户多年的聊天记录。而我们监控到现网的损坏率是0.02%,也就是每 1w 个用户就有 2 个会遇到数据库损坏。考...
Realm(Java) 的那些事 - Android - 掘金
Realm 什么是Realm? 在Android平台上,有很多基于SQLite的ORM框架,例如GreenDAO, OrmLite, SugarORM, ...
日均数据量千万级,MySQL、TiDB 两种存储方案的落地对比 - 后端 - 掘金
盖娅广告匹配系统(GaeaAD)用于支撑盖娅互娱全平台实时广告投放系统,需要将广告数据和游戏 SDK 上报的信息进行近实时匹配,本质上来说需要实时的根据各个渠道的广告投放与相应渠道带来的游戏玩家数据进行计算,实现广告转化效果分钟级别的展现及优化。 ...
基于 Docker 的 MongoDB 实现授权访问 - 掘金
本文首发于Gevin的博客 原文链接:基于Docker的MongoDB实现授权访问 未经 Gevin 授权,禁止转载 基于Docker的MongoDB实现授权访问 基于Docker部署一个数据库实例通常比直接在服务器上安装数据库还要简单,Gevin在开发环境...
Redis 源码阅读笔记 -- 数据库 redisDb - 后端 - 掘金
一. 数据库 Redis的数据库使用字典作为底层实现,数据库的增、删、查、改都是构建在字典的操作之上的。 redis服务器将所有数据库都保存在服务器状态结构redisServer(redis.h/red...
Redis 源码阅读笔记(3)-- 字典 dict - 后端 - 掘金
字典是Redis的一种非常重要的底层数据结构,其应用非常广泛。Redis的数据库就是使用字典作为底层实现的,对数据库的增删查改也都构建在对字典的操作之上;字典也是hash键的底层实现之一,当一个哈希键包含的键值对比较多时,或者键值对中的元素都是比较长的字符串时...
PostgreSQL 10.0 逻辑复制原理与最佳实践 - 后端 - 掘金
背景 PostgreSQL 从2010年发布的9.0开始支持流式物理复制,备库可以作为只读库打开,提供给用户使用。 物理复制的好处 1. 物理层面完全一致,这是许多商业数据库的惯用手段。例如Oracle的DG。 ...
记一次 SQL 优化 - 后端 - 掘金
在DBA的工作中,SQL优化的工作量占工作很大的一块,我们在平时工作中也是这样,常常遇到一些执行效率低下的SQL语句,而这些执行效率低下的SQL,有的是业务系统刚刚上线的,有的是已经执行很久但因为执行环境变化而导致出现的。这里给大家分享一个SQL的优化案例分析...
使用 reverse 索引优化 like 的SQL语句 - 后端 - 掘金
在有一些情况下,开发同学经常使用like去实现一些业务需求,当使用like时,我们都知道使用like 前%(like ‘%111’)这种情况是无法使用索引的,那么如何优化此类的SQL呢,下面是一个案例。 原SQL如下: pcc_cust_infonew 表索...
我必须得告诉大家的 MySQL 优化原理 - 后端 - 掘金
说起MySQL的查询优化,相信大家收藏了一堆奇淫技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建...
MySQL 处理海量数据时的一些优化查询速度方法 - 后端 - 掘金
在参与实际项目中,当 MySQL 表的数据量达到百万级时,普通的 SQL 查询效率呈直线下降,而且如果 where 中的查询条件较多时,其查询速度无法容忍。想想可知,假如我们查询淘宝的一个订单详情,如果查询时间高达几十秒,这么高的查询延时,任何用户都会抓狂。因...
MySQL 性能测试经验 - 后端 - 掘金
作者 |何龙编辑 | 顾乡 一、背景 近期在进行资源调度管理平台的重构工作,其中的Resource/Property数据库设计,在没有更加优化的方案前,打算沿用当前平台的数据库结构;这就需要对当前平台的数据库结构进行剖析研究,并对其性能进行测试与分析,得出的数...
MVCC 原理探究及 MySQL 源码实现分析 - 后端 - 掘金
MVCC原理探究及MySQL源码实现分析 数据库多版本读场景 MVCC实现原理 通过DB_ROLL...
MySQL 事务、锁、SQLMode、分区 - 后端 - 掘金
MySQL学习笔记(5) 本文主要内容:事务、锁、SQL Mode、分区(这个有点意思) 事务控制和锁定语句 LOCK TABLE...
MySQL 读写分离实战 - 后端 - 掘金
【分布式架构初探】 第四节-MySQL读写分离实战 4.1 预备工具以及环境 4.2 虚拟机的准备 4.3 CentOS7的安装 4.4 MySQL数据库的安装 4.5 MySQL主从配置(一主...
MySQL 慢查询 & 分析 SQL 执行效率浅谈 - 后端 - 掘金
如何在MySQL中查找效率慢的SQL语句呢?这可能是困扰很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含所有执行时间超过long_...
mysql 存储引擎介绍与适用场景 - 后端 - 掘金
1.引擎的介绍 ISAM: 该引擎在读取数据方面速度很快,而且不占用大量的内存和存储资源;但是ISAM不支持事务处理、不支持外来键、不能够容错、也不支持索引。该引擎在包括MySQL 5.1及其以上版本的数据库中不再支持。 Berkeley: 该存...
MYSQL 数据库常见的优化操作 - 后端 - 掘金
一、Index索引 将Index放第一位,不用说,这种优化方式我们一直都在悄悄使用,那便是主键索引。有时候我们可能并不在意,如果定义适合的索引,数据库查询性能(速度)将提高几倍甚至几十倍。 普通索引 ...
高性能数据库连接池的内幕 - 后端 - 掘金
摘要:如何打造高性能的数据库连接池框架,可以从哪些角度进行优化,连接池的大量优化实践如何为你的系统保驾护航,本专题将带你走进连接池的世界,为你一一揭晓。 ...
MySQL 占用空间一键查询实践 - 后端 - 掘金
作者 | 莫韵编辑 | 京露 莫韵,高级运维工程师。devops/sre观念的支持者,曾在迅雷担任运维工程师,精通CDN、大数据、海量运维之道。 目前就职于互联网企业担任业务系统运维职位,致力于高效运维实践。 经常会遇到DB满的情况 特别是大家共用...
MySQL 锁总结 - 后端 - 掘金
MySQL 锁基础 参考了何登成老师文章的结构MySQL 加锁处理分析,中间又加了一些自己觉得需要考虑的情况。 分析本session的加锁方式 系统的隔离级别是什么?是RC还是RR? 判断SQL的加锁类型,是共享锁还是排他锁? SQ...
Simple-Sharding : 一款极简的分库分表中间件 - 后端 - 掘金
Simple-Sharding是一款基于JDBC API开发、简单易用的分库分表中间件,目标是通过较少的代码来揭示分库分表中间件最核心的本质。 背景 目前大多数互联网公司在遇到数据层瓶颈的时候,几...
MySQL 数据库索引使用场景 & 注意事项 - 后端 - 掘金
目录 1.何种查询支持索引? 2.注意事项和建议 一 何种查询支持索引? 1 MySQL...
优化案例 | 分区表场景下的 SQL 优化 - 后端 - 掘金
导读 有个表做了分区,每天一个分区。 该表上有个查询,经常只查询表中某一天数据,但每次都几乎要扫描整个分区的所有数据,有什么办法进行优化吗? 待优化场景 有一个大表,每天产生的数据量约100万,所以就采用表分区方案,每天一个分区。 下面是该...
服务端指南 数据存储篇 | MySQL(03) 如何设计索引 - 掘金
改善性能最好的方式,就是通过数据库中合理地使用索引,换句话说,索引是提高 MySQL 数据库查询性能的主要手段。在下面的章节中,介绍了索引类型、强制索引、全文索引。 原文地址:服务端指南 数据存储篇 | MySQL(03) 如何设计索引博客地址:http://...
MySQL 避免行锁升级为表锁——使用高效的索引 - 掘金
众所周知,MySQL 的 InnoDB 存储引擎支持事务,默认是行锁。得益于这些特性,数据库支持高并发。如果 InnoDB 更新数据使用的不是行锁,而是表锁呢?是的,InnoDB 其实很容易就升级为表锁,届时并发性将大打折扣了。 经过我操作验证,得出行锁升级...
面试高概率问题之事务管理 - 后端 - 掘金
这几天找工作,面试了将近10家公司,其中有几个问题几乎每家公司都会问,spring的事物机制应该算是其中最常被问到的问题,而且这个问题你回答的好,面试官会觉得你基本功很扎实,印象直接提升一个档次。今天就来详细分析讲解一下spring的事物机制。文章有点长,看完...
Mysql 主从同步实战 - 掘金
1、Introduction 之前写过一篇文章:Mysql主从同步的原理。相信看过这篇文章的童鞋,都摩拳擦掌,跃跃一试了吧?今天我们就来一次mysql主从同步实战! 2、环境说明 os:ubuntu16.04 mysql:5.7.17下面的实战演练,都是基于上...
服务端指南 数据存储篇 | MySQL(01) 数据类型的使用与选择 - 掘金
要了解 MySQL 数据库,首先必须要了解 MySQL 支持的数据类型。实际上,MySQL 支持很多数据类型,包括整数类型、实数类型、字符串类型、枚举类型、时间类型等。 原文地址:服务端指南 数据存储篇 | MySQL(01) 数据类型的使用与选择博客地址:h...
MySQL 的七种 join - 后端 - 掘金
对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章(实在不清楚为什么Coding ...
使用数据库的正确姿势(二) - 后端 - 掘金
题图 在使用数据库的正确姿势(一)中,我给大家介绍了数据库应用的第一个层次——数据库的基本使用,下面我将给大家介绍剩下两个层次,分别是 面向对象的数据库...
MySQL 索引背后的数据结构及算法原理 - 后端 - 掘金
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关...
Mybatis Generator Plugin 定制我需要的 DAO - 后端 - 掘金
在上一篇文章我的Spring多数据源中提到对Mybatis Generator Plugin的开发改造,今天就上次示例中的一些细节点做一些描述介绍。 首先,先要理解Mybatis Generator Plugin,建议先阅读 小...
Spring Boot 揭秘与实战(二) 数据缓存篇 - Redis Cache - 掘金
本文,讲解 Spring Boot 如何集成 Redis Cache,实现缓存。 博客地址:http://blog.720ui.com/ 在阅读「Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门」后,对 Spring Boot 集成缓存机制...
5 分钟带你入门 redis - 后端 - 掘金
1.redis概述 redis是一个开源的,先进的 key-value 存储可用于构建高性能的存储解决方案。它支持数据结构有字符串,哈希,列表,集合,带有范围查询的排序集,位图,超文本和具有半径查询的地理空间索引。 NoSQL,Not Only [SQL],...
- 能不加字段就不要加, 能不修改字段就不要修改, 能不删除字段就不要删除, 等等为什么要删除字段呢? 如果没事,不要蛋疼的找事。 实际上,我们那次更新失败后, 我们并没有增加那个字段, 然后我们一直运行到今天, 但是后来还是增加了其他字段2. 增加字段的情...
mysql 查询语句 in 和 exists 二者的区别和性能影响 - 后端 - 掘金
还记得一次面试中被人问到in 和 exists的区别,当然只是草草做答,现在来做下分析。 mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询。一直大家都认为exists比in语句的效...
使用mysql日期与时间函数轻易搞定日期与时间逻辑 - 掘金
mysql查询当天的数据: select* from procurement where date(createDate)=curdate() order by refreshDatetime desc ;mysql查询过去几天的数据: ...
简单高可用 redis 架构实践 - 后端 - 掘金
背景:支撑线上千万级别的天级查询请求,要求高可用。 一、方案调研 1.1 redis版本选择 redis当前主流版本是redis 2.x 和 ...
MySql 优化 - 后端 - 掘金
原文链接:http://blog.csdn.net/qq_22329521/article/details/54801950 SQL优化 通过show status命令了解各种sql的执行效率 查...
(18)mysql 中的分区(开发篇完) - 掘金
概述 之前,看到分区,我捏个去,好高大上哟。昨天终于知道了分区是个啥玩意,也不过如此,今天总结一下,好记性不如烂笔头嘛。 MySQL从5.1开始支持分区功能。分区一句话就是:把一张表按照某种规则(range/list/hash/key等)分成多个区域(页...
(17)sql注入与sql mode - 掘金
概述 sql注入就是利用某些数据库的外接接口将用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。在安全领域,我们永远不要信任用户的输入,我们必须认定用户输入的数据都是不安全的,我们都需要对用户输入的数据进行过滤处理。没有(运行时...
(16)mysql 中的表锁定及事务控制 - 掘金
概述 MySQL支持三种锁级别:页级、表级、行级。MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁...
(3)mysql 中的运算符 - 掘金
概述 MySQL支持多种类型的运算符,这些运算符可以用来链接表达式,这些运算符包括: 算数运算符(+,-,*,/,%); 比较运算符(=,!=,<,<=,>,>=,between,in,is null,is not null,like...
(15)mysql 中的触发器 - 掘金
概述 触发器,顾名思义就是当某个事情(事件)发生时候,执行某一段程序。触发器有四大要素:监视地点(table_name)、监视事件(insert/update/delete)、触发时间(before/after)、触发执行程序(insert/update/de...
(14)mysql 中的事件 - 掘金
概述 事件调度器是MySQL5.1后新增的功能,可以将数据库按自定义的时间周期触发某种操作,可以理解为时间触发器,类似于linux系统下面的任务调度器crontab,或者类似与window下面的计划任务。值得一提的是MySQL的事件调度器可以精确到每秒钟执行一...
(13)mysql 中的流程控制 - 掘金
概述 在mysql中可以使用if/case/loop/leave/iterate/repeat/while语句进行流程控制。 if语句 if语句实现条件判断,类似高级语言(c/c++/php/java等)中的if语句。 if search_condition ...
redis从入门到精通 - 掘金
解压后的安装 [root@server1 redis-3.0.5]# make 指定安装目录: [root@server1 redis-3.0.5]# make PREFIX=/usr/local/redis install进入/usr/local/redis...
(12)mysql 中的光标 - 掘金
概述 查询语句可能查询出多条记录,在存储过程和函数中使用光标来逐条读取查询结果集中的记录。有些书上将光标称为游标。光标的使用包括声明光标、打开光标、使用光标和关闭光标。光标必须声明在处理程序之前,并且声明在变量和条件之后。光标可以类比为数组内部中的循环指针。 ...
(11)mysql 中的条件定义、处理 - 掘金
概述 在MySQL中,特定异常需要特定处理。这些异常可以联系到错误,以及子程序中的一般流程控制。定义异常是事先定义程序执行过程中遇到的问题,异常处理定义了在遇到问题时对应当采取的处理方式,并且保证存储过程或者函数在遇到错误时或者警告时能够继续执行。这样可以增强...
(10)mysql 中的变量 - 掘金
定义变量 语法如下 declare var_name[,...] type [default value];MYSQL 变量定义只能在存储过程或函数里面定义,不像 Oracle / SQL Server。该变量的作用范围只能在begin...end块中。变量定...
(9)mysql 中的存储过程和自定义函数 - 掘金
概述 存储过程和自定义函数是事先经过编译并存储在数据库中的一段SQL语句的集合。相对普通查询优点: 可以简化应用开发人员的工作,可重用。 减少数据库与应用服务器之间的数据传输。 提高了数据处理的效率。 安全性提高。由于存储过程也可以使用权限控制,而且参数化的...
(8)mysql 中的视图 - 掘金
概念 视图是一种虚拟存在的表,对于使用视图的用户来说,基本上跟使用正常的表一样。视图在数据库中是不存在的,视图中的数据是动态生成的。 视图相对于普通表的优势: 简单:使用视图不需要关心后面的表的对应结构条件,对于使用者来说,视图是过滤好的结果集。 安全...
(7)mysql 索引的设计和使用 - 掘金
概述 索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要看所有数据。 在My...
(6)mysql 中的字符集 - 掘金
概述 从本质上来讲,计算机只识别二进制代码,因此,不论计算机程序还是其处理的数据,最终都必须转化为二进制码,计算机才能识别。人们给每一个文字符号编码以便计算机识别处理,这就是计算机字符集的由来。 选择合适的字符集 MySQL5.6支持几十种字符集,包括UC...
(5)mysql 常用存储引擎 - 掘金
概述 mysql5.5之前默认存储引擎是MyISAM,5.5之后改为InnoDB。若要修改默认引擎,可以修改配置文件中的default-storage-engine。可以通过show engines来查看当前数据库支持的引擎。使用select engine...
(4)mysql 中的常用函数 - 掘金
概述 mysql提供了很多内建函数,其中常用的函数有: 字符串函数 日期函数 数值函数 我一般建议,能在后台语言(php,java,c#等)中使用的类似函数,就在后台语言中使用,这样减少mysql压力,和保证逻辑性。 字符串函数 函数 功能 ...
(1)SQL 基本查询 - 掘金
该篇文章主要是对mysql的查漏补缺,该篇包括: 排序和限制 聚合 表联结 子查询与联合 排序和限制 使用关键字 order by和limit; //排序 select * from tablename [where condition] [ord...
(2)mysql 支持的数据类型总结 - 掘金
概述 mysql支持的数据分为3部分: 数值类型 日期时间类型 字符串类型 先扔一张大图做总结:mysql支持数据类型总结 数值类型 MySQL支持所有标准的SQL中的数值类型 1.整型数值 整数类型 字节数 最小值 ~ 最大值 tinyin...
让 mysql 支持全部 Unicode 字符 - 后端 - 掘金
为了存储全部表情符号,作者在 mysql 中使用 utf8mb4 替换掉了 utf8 字符集,本文是具体步骤...
网友评论