随笔分类 - Mysql
摘要:背景 我们在业务场景中经常会碰到通过某个字符串查询对应记录的情况。比如常见的邮箱登录、手机号登录。如果不给它创建索引,则MySQL就会进行全局扫描,非常耗时。 那类似邮箱地址这样的字符串,我们应该如何给它创建索引呢? 这里简单介绍几种方法。 几种方法 比如我们有一张表user_info用于存储用户登
阅读全文
摘要:基于工具Navicat 一般项目中都会有测试数据库和生产数据库,测试数据库在平时开发过程中会经常变化,那么如何同步测试与生产数据库呢,可以利用Navicat的数据库结构同步功能:
阅读全文
摘要:索引方法:【按照实现的方式分类】一、B-Tree索引 B-Tree是最常见的索引类型,所有值(被索引的列)都是排过序的,每个叶节点到跟节点距离相等。所以B-Tree适合用来查找某一范围内的数据,而且可以直接支持数据排序(ORDER BY)B-Tree在MyISAM里的形式和Innodb稍有不同:My
阅读全文
摘要:前缀索引的优劣 很多情况下,我们需要根据一个长字符串类型的字段去查找记录,比如身份证、邮箱,为了避免全表扫描,就需要为字符串字段添加索引。由于Mysql支持前缀索引,所以我们可以选择将整个字段添加索引,或者只将前一部分的字符串加上索引: #整个字段alter table T add index in
阅读全文
摘要:在这篇文章开始之前,我们需要注意一下,并不是索引越多越好,索引是一种以空间换取时间的方式,所以建立索引是要消耗一定的空间,况且在索引的维护上也会消耗资源。 数据库建立索引的常用规则如下: 1.表的主键和外键建立索引【主键具有唯一性,索引值也是有唯一,查询时可以快速定位到数据行;外键一般关联的是另一个
阅读全文
摘要:导入dump好的sql脚本到本地出现“2006”的错误: MySQL 命令行客户端执行导入的时候报错: ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id
阅读全文
摘要:数据库查询流程 我们先来看下,一条查询语句下来,会经历哪些流程。 比如我们有一张数据库表 CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `name` varchar(100) NOT
阅读全文
摘要:索引在计算机中的位置 一般来说,索引本身也很大,不可能全部存储在内存中,一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作。判断一种数据结构作为索引的优劣主要是看在查询过程中的磁盘IO渐进复杂度,一个好的索引应该是尽量减少磁盘IO操作次数。 为什么使用B+树 1、B树只适合随机检索,而B+树同时
阅读全文
摘要:一、定义 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。 二、特点 1、能完成较复杂
阅读全文
摘要:存储引擎简介 存储引擎是对于数据库文件的一种存取机制(存取方式),如何实现存储数据,如何为存储的数据建立索引以及如何更新,查询数据等技术实现的方法。 查看Mysql有哪些存储引擎: show engines; Engine:存储引擎的名称Support:MySql是否支持,YES代表支持,NO代表不
阅读全文
摘要:MySQL中的索引类型有以下几种: 普通索引:仅加速查询 唯一索引:加速查询 + 列值唯一(可以有null)+ 表中可以多个唯一索引 主键索引:加速查询 + 列值唯一(不允许有null)+ 表中只有一个主键(特殊的唯一索引) 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并 全文索
阅读全文
摘要:1)数据库本身 (1)查看数据库状态 (2)查找日志文件中是否有sql相关打印 (3)查看当前连接数 执行 show processlist 查看mysql正在运行的sql线程 (4)查看mysql慢查询日志(默认情况下,mysql不开启慢查询日志) 可通过命令:show variables lik
阅读全文
摘要:1)、like查询以“%”开头(非要写在最左边,就使用覆盖索引;如果开头、结果都有“%”,也不会使用索引,走的是全表扫描); 2)、or语句前后没有同时使用索引【可使用 union 代替or】; 3)、组合索引中不是使用第一列索引;(不符合最左匹配原则) 4)、字符串类型的字段没有使用引号引起来;【
阅读全文
摘要:联合索引又叫复合索引,对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index(a,b,c),可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 。当最左侧字段是常量引用时,索引就十分有效。
阅读全文
摘要:一、关系型数据库 1.概念关系型数据库采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。主要代表:SQL Server,Oracle,Mysql,PostgreSQL。 2.优点(1) 容易理解,二维表的结构非常贴近现实世界,二维表格,容易理解。(2)使用方便,通用的sql语句使
阅读全文
摘要:一、SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 二、SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不同的服务器和数据库特
阅读全文
摘要:1.MySQL数据库,一天五万条以上的增量,预计运维三年,怎么优化? a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。b. 选择合适的表字段数据类型和存储引擎,适当的添加索引。c. mysql库主从读写分离。d. 找规律分表,减少单表中的数据量提高查询速度。e.添加缓存
阅读全文
摘要:悲观锁(Pessimistic Lock) 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。它指的是对数据被
阅读全文
摘要:1、什么是SQL注入? 就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。 例如: 注意:SQL注入对登录和注册不安
阅读全文
摘要:1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。 例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要
阅读全文