mysql
ailinyingai
DevOps 搬砖人 干饭人
展开
-
mysql常见
索引的为什么使查询加快?有啥缺点?默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度缺点:创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大以表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护.原创 2020-12-31 10:11:41 · 81 阅读 · 0 评论 -
mysql 索引
索引最基本的东西,N叉树,跳表、LSM我都没讲,同时要创建出好的索引要顾及到很多的方面:最左前缀匹配原则。这是非常重要、非常重要、非常重要(重要的事情说三遍)的原则,MySQL会一直向右匹配直到遇到范围查询 (>,<,BETWEEN,LIKE)就停止匹配。尽量选择区分度高的列作为索引,区分度的公式是 COUNT(DISTINCT col)/COUNT(*)。表示字段不重复的比率,比...翻译 2020-02-25 14:12:49 · 129 阅读 · 0 评论 -
mysql 0011 连接
join底层发生了什么原创 2020-02-05 15:38:59 · 139 阅读 · 0 评论 -
mysql 0010 单表访问方法
按照有序的主键值去回表取记录专有名词 ror原创 2020-02-05 15:37:42 · 115 阅读 · 0 评论 -
mysql X00
alter 操作阻塞在MySQL 5.5.3以后的版本中,未提交的事务一定会堵塞DDL请求(据说5.6.6以后的版本做了相关的优化,未做测试暂且不提)DDL在等待metada lock的过程中肯定会堵塞后续的DML请求,也有可能堵塞后续的SELECT请求(需要看SELECT请求是否能够命中qcache)怎么处理这种问题是老生常谈了,优化SQL避免出现大事务,请求结束立即执行commit关闭事...翻译 2020-01-13 15:05:41 · 142 阅读 · 0 评论 -
mysql封装
# -*- coding=utf8 -*-import MySQLdbclass MysqlManager(object): '''mysql管理器''' def __init__(self, db, user, passwd, host='localhost', port=3306, charset='utf8'): '''初始化数据库''' ...原创 2019-12-28 10:15:54 · 112 阅读 · 0 评论 -
mysql 0009 innodb的表空间
pass翻译 2019-12-12 15:27:59 · 68 阅读 · 0 评论 -
mysql0008 mysql的数据目录
存储运行过程中产生的数据一定要区分开来datadir/usr/local/var/mysql/原创 2019-12-12 14:24:55 · 74 阅读 · 0 评论 -
MYSQL0007 B+树索引的使用
空间上的代价时间上的代价适用的情况全值匹配匹配左边的值匹配范围值精确匹配某一列并范围匹配另外一列用于排序用于分组只为用于搜索排序 分组的列创建索引为列的基数大的列创建索引索引列的类型尽量小可以只对字符串值的前缀建立索引只有索引列在比较表达式中单独出现才可以适用索引为了尽可能少的让聚簇索引发生页面分裂和记录移位的情况 建议让主键拥有 auto_increment 属性...原创 2019-12-12 14:22:45 · 96 阅读 · 0 评论 -
mysql复习
create database app default charset utf8; # 指定字符集建库show create database app\G #查看建库语句以及库的字符集注意:MySQL5.1和MySQL5.5环境的默认建表语句中的引擎是不同的。如果希望控制表的引擎,就要在建表语句中显示的指定引擎建表MySQL5.1以及之前默认引擎为MyISMMySQL5.5.5以后默认引擎...原创 2019-12-11 11:08:16 · 80 阅读 · 0 评论 -
mysql 规范
1)配置规范(1)MySQL数据库默认使用InnoDB存储引擎。(2)保证字符集设置统一,MySQL数据库相关系统、数据库、表的字符集使都用UTF8,应用程序连接、展示等可以设置字符集的地方也都统一设置为UTF8字符集。注:UTF8格式是存储不了表情类数据,需要使用UTF8MB4,可在MySQL字符集里面设置。在8.0中已经默认为UTF8MB4,可以根据公司的业务情况进行统一或者定制化设置。...原创 2019-11-25 11:01:16 · 135 阅读 · 0 评论 -
mysql封装
#!/usr/bin/env python# -*- coding: utf-8 -*-import MySQLdbimport time, reclass LightMysql: """Lightweight python class connects to MySQL. """ _dbconfig = None _cursor = None _co...原创 2019-11-22 16:33:13 · 95 阅读 · 0 评论 -
慢查询优化
建索引的几大原则1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整。2.=和in可以乱序,比如a...原创 2019-11-11 15:55:25 · 275 阅读 · 0 评论 -
性能调优
选择合适的存储引擎: InnoDB除非你的数据表使用来做只读或者全文检索 (相信现在提到全文检索,没人会用 MYSQL 了),你应该默认选择 InnoDB 。你自己在测试的时候可能会发现 MyISAM 比 InnoDB 速度快,这是因为: MyISAM 只缓存索引,而 InnoDB 缓存数据和索引,MyISAM 不支持事务。但是 如果你使用 innodb_flush_log_at_trx...翻译 2019-11-05 10:50:13 · 69 阅读 · 0 评论 -
sql语句大全
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server— 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice ‘disk’, ‘testBack’, ‘c:\mssql7backup\MyNwind_1.dat’— ...翻译 2019-11-05 10:48:02 · 453 阅读 · 0 评论 -
mysql id问题
在MySQL 8.0之前:1)如果是MyISAM表,则数据库重启后,ID值为182)如果是InnoDB表,则数据库重启后,ID值为15在MySQL 8.0开始,1)如果是MyISAM表,则数据库重启后,ID值为182)如果是InnoDB表,则数据库重启后,ID值为18...原创 2019-10-31 17:48:05 · 484 阅读 · 0 评论 -
MYSQL0001------mysql是如何运行的
客户端和服务端的架构以微信为例子 客户端程序有很多 比如手机端 电脑软件或者网页版微信客户端和服务器端的通信启动mysql 服务端程序启动客户端 并连接到服务端程序在客户端程序输入一些命令语句作为请求 发送到服务器程序 服务器接收到这些请求之后根据请求内容来操作具体的数据 并向客户端返回操作结果每一个运行着的程序也被称为一个进程 进程id 叫做 pid服务器进程 为 my...翻译 2019-08-12 13:53:44 · 267 阅读 · 0 评论 -
MYSQL0002 启动项和配置文件
启动选项和配置文件一般选项都有默认值比如服务器允许同时连入的客户端的默认数量是151默认存储引擎是 innodb–help 选项的解析一般有长形式 也有短形式+ /etc/my.cnf+ /etc/mysql/my.cnf+ SYSCONFDIR/my.cnf+ defaults-extra-file+ ~/.my.cnf+ ~/.mylogin.cnf系统变量+...翻译 2019-08-12 14:03:08 · 95 阅读 · 0 评论 -
MYSQL0003 字符集和比较规则
字符集和比较规则字符范围如何映射utf8mb3 1-3个字节表示字符utf8mb4 1-4个字节表示字符show charset服务器级别数据库级别表级别列级别翻译 2019-08-13 08:36:02 · 79 阅读 · 0 评论 -
MYSQL0004 innodb记录存储结构
表中的数据存储到磁盘上的存储引擎将数据划分为若干的页 以页作为磁盘和内存之间交换的基本单位 大小一般为16 KB行格式有四种compatredundant (5.0以前的版本)dynamic (5.7默认 行溢出的时候不记录前768个字节 而是所有的字节存储到其他页面)compressed (行格式会采用压缩算法对页面进行压缩 用以节省空间)指定行格式记录的额外信息和...翻译 2019-08-13 09:35:37 · 78 阅读 · 0 评论 -
mysql 问题解析
SET @@global.sql_mode=“NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”;去掉严格模式原创 2019-08-30 13:32:34 · 130 阅读 · 0 评论 -
MYSQL0006 B+树索引
mysql索引的问题原创 2019-08-31 09:18:16 · 64 阅读 · 0 评论 -
mysql 军规
好的数据库规范有助于减少软件实现的复杂度,降低沟通成本,本铁律主要涵盖了建库建表、建索引、写 SQL、ORM 映射等方面的处理约定。1.建库铁律铁律 Level 备注字符集 使用 utf-8。如果存储的是表情则选用 utf8mb4 进行存储。 强制 排序规则 使用 utf8_general_ci 强制2.建表铁律铁律 Level 备注注释 一定要有字段注释。 强制 编码 使用...翻译 2019-09-05 09:26:23 · 195 阅读 · 0 评论 -
mysql
索引相关关于MySQL的索引,曾经进行过一次总结,文章链接在这里 Mysql索引原理及其优化.什么是索引?索引是一种数据结构,可以帮助我们快速的进行数据的查找.索引是个什么样的数据结构呢?索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引.Hash索引和B+树所有...原创 2019-09-16 11:29:59 · 176 阅读 · 0 评论 -
mysql 交集
例如下面两站表A,B.A表和B表分别有5-10w数据。A表结构如下:id bid name title publisher extraB表结构如下id bid name title publisherA出版社也为很多人出版了书籍,B出版社也为很多人出版了书籍,有sql语句找出这两个出版社为那些人 共同出版书籍,用innerjoin太慢,有没有什么更好的办法?解答一:由于不知道你表的索...翻译 2019-10-08 14:25:41 · 504 阅读 · 0 评论 -
MYSQL0005 数据页结构
索引页file header 38字节page header 56infimum + supremum 26user recordsfree spacepage directoryfile tailer 8不论对页中的记录做增删改操作 innodb 始终会维护一条记录的单链表链表中的各个节点是按照主键值由小到大顺序连接起来的innodb 为了不同的目的而设计了不同类型的页...翻译 2019-08-14 10:44:13 · 71 阅读 · 0 评论