MyISAM

兴奋了!阿里技术官手写“MySQL笔记”,传授你年薪百万级干货

落花浮王杯 提交于 2020-10-01 05:03:27
前言 MySQL重要吗?重要!为什么重要?因为它在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,现在面试中,MySQL也成为了必问知识要点,但是MySQL要达到精通的程度,却并非那么容易,所以深度学习M有SQL真的非常重要。 本次分享阿里技术官手写的“MySQL笔记”一共分为上下两册: 上册主要是以大纲脑图为主,清晰的划分了知识点,每个细节都有涉及到,比较全面。 下册则更注重SQL优化问题,在使用上讲述了很多方法和技巧。 因此拥有完整的上下两侧,搞定MySQL,吊打面试官是没什么问题了,这套百万年薪级的技能交给你,不信你还不想要。 一、阿里MySQL笔记(上册) 1.添加数据 2.删除数据 3.修改数据 4.查询语句 单标查询 多表查询 条件查询 like模糊查询 排序查询 聚合函数 分组查询 分页查询 5.约束 (1)概述 (2)分类 主键约束 非空约束 唯一约束 外键约束 6.数据库的设计 多表之间的关系 数据库设计的范式 7.事务 事务的基本介绍 事务四大特征 事务的隔离级别 二、阿里MySQL笔记(下册) 1.MySQL数据库 - SQL优化 结构图 MySQL数据库引擎简介 存储引擎管理 MySQL中的索引(简介+种类+管理+优化)

MySQL 基础语法

帅比萌擦擦* 提交于 2020-09-30 06:53:16
MySQL MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。 什么是数据库? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。 我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。 所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 RDBMS 即关系数据库管理系统(Relational Database Management System)的特点: 数据以表格的形式出现 每行为各种记录名称 每列为记录名称所对应的数据域 许多的行和列组成一张表单 若干的表单组成database RDBMS 术语 数据库: 数据库是一些关联表的集合。 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。 冗余: 存储两倍数据

狂刷四遍398道java最新MySQL笔记后,我三面阿里研发部,成功定级P7

爷,独闯天下 提交于 2020-09-30 04:30:59
最近疫情趋于平稳,也是金九银十好时节,出来面试的人也多了起来。我发现不少候选人,对数据库的认知还处在比较基础的阶段,以为会写 “增删改查”、做表关联 就足够了,那些工作中经常出现的问题,却支支吾吾答不上来,比如: ◆ count(*) 慢该如何解决? ◆ 对于千万级的大表,MySQL 要怎么优化? ◆ SQL 使用 Join 好,还是多次 Select 好? ◆ 1000 多万条数据,建了索引还是慢,该怎么办? 想来,我在用 MySQL 的过程中,遇到的问题也是五花八门, 从开发技巧到管理维护,从性能问题到安全问题。 第一个感受就是,MySQL 本身是个设计优良的系统,其中有很多巧妙的设计思路,比如 WAL 机制、索引的实现、缓存的处理方式等等 ,掌握好这些,能解决日常工作中的很多问题。 那会儿,也没少在网上找资料,虽说有所收获,但内容大多脱离真实的软件开发,看的时候各种明白,上手实操就原形毕露了。 太简短不全面,禁不住深挖,因此很多次都掉坑里,那么如何避坑呢? 刚好,通过最近的学习整理出一份《MySQL性能调优与架构笔记及面试题》,笔记里都有详细讲到,已打包好,文末有免费获取方式。 MySQL性能调优与架构笔记 一、基础篇 MySQL基本介绍 MySQL架构组成 MySQL存储引|擎简介 MySQL安全管理 MySQL备份与恢复 二、性能优化篇

影响MySQL性能的环境变量详解

亡梦爱人 提交于 2020-09-26 08:20:06
本文目的: 本文旨在详细介绍影响MySQL性能的环境变量,让读者能够正确了解变量的含义,从而结合实际需求设置合理的值。 环境说明 : MySQL版本:8.0.20 (文章内容基本适用MySQL5.7) 版权说明: 本文为博主原创,转载请注明出处。 原文地址: https://blog.csdn.net/qq_38688267/article/details/108317510 文章目录 前言 查询环境变量 设置环境变量 重要变量介绍 全局变量 Innodb引擎变量 MyISAM引擎变量 补充说明 在DML语句中设置环境变量 join_buffer_size取值 排序优化相关设置 总结 前言 查询环境变量 -- 查看所有环境变量 show variables ; -- 模糊查询环境变量 show variables like '%size%' ; 设置环境变量 -- 会话级设置,只会影响当前会话 set session join_buffer_size = 1024 * 256 ; -- 全局设置 set global join_buffer_size = 1024 * 512 ; 重要变量介绍 全局变量 参数名 默认值 作用 说明 max_connections 151 允许的最大同时客户端连接数 这个根据业务需求和硬件条件设置,一般一两千即可,Linux系统最多支持10000。

MySQL主从复制延迟原因及处理思路

一世执手 提交于 2020-09-26 01:34:40
来源:公众号「神谕的暗影长廊」 在异步或半同步的复制结构中,从库出现延迟是一件十分正常的事。 虽出现延迟正常,但是否需要关注,则一般是由业务来评估。 如:从库上有需要较高一致性的读业务,并且要求延迟小于某个值,那么则需要关注。 简单概述一下复制逻辑: 1、主库将对数据库实例的变更记录到binlog中。 2、主库会有 binlog dump 线程实时监测binlog的变更并将这些新的events推给从库( Master has sent all binlog to slave; waiting for more updates ) 3、从库的 IO Thread 接收这些events,并将其记录入relaylog。 4、从库的 SQL Thread 读取relaylog的events,并将这些events应用(或称为重放)到从库实例。 上述为默认的异步复制逻辑,半同步复制又有些许不同,此处不再赘述。 此外,判断从库有延迟是十分简单的一件事: 在从库上通过 SHOW SLAVE STATUS 检查 Seconds_Behind_Master 值即可。 产生延迟的原因及处理思路 〇 主库DML请求频繁(tps较大) 即主库写请求较多,有大量insert、delete、update并发操作,短时间产生了大量的binlog。 【原因分析】 主库并发写入数据,而从库 SQL Thread

MYSQL-外键约束(图文)

风流意气都作罢 提交于 2020-09-24 07:27:43
简介 外键的使用条件: 两个表必须是InnoDB表,MyISAM表暂时不支持外键 外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引 外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以,且被关联字段必须保证唯一 四种外键约束方式 RESTRICT(约束):如果出现在删除时,意思是约束外键主键did记录(主表中的记录)不能直接删除,必须先删除被约束的表(从表)字段中dept_id所有这个外键主键值对应的记录,才能删除外键约束(主表中的记录),测试发现在navicat中不选择默认设置的就是这种 NO ACTION:在MySQL中等同于RESTRICT,原因如下:restrict是在修改或者删除之前去检查从表中是否有对应的数据,如果有,拒绝操作,而no action是来源标准的sql,在有些数据库中,会延迟检查,即在修改或者删除完以后去检查从表中是否有对应的数据,如果有,拒绝操作,但是在MySQL中,外键约束都会立即检查,所以两者等价 CASCADE:删除选择这个时,删除主表中的记录时,主表中的这个主键id关联的从表的这个id值所在的记录也会被删除。建议不选。 SET NULL :删除选择这个时,如果从表(被约束的字段所在的表中)被约束的字段的值设置为可以为空时

PHP论坛实现积分系统的思路

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-20 05:24:11
首先在用户表定义一个积分字段; 然后创建一个等级表,主要字段有等级名,上限积分和下限积分; 再根据用户的行为进行积分累加; 最后根据判断用户积分在哪个等级范围,从而得出用户等级。 用户表 CREATE TABLE `bbs`.` user `( `id` INT ( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT comment ' 用户id ' , `avatar` VARCHAR ( 255 ) NOT NULL comment ' 头像 ' , `nickname` VARCHAR ( 60 ) NOT NULL comment ' 昵称 ' , `username` VARCHAR ( 16 ) NOT NULL comment ' 用户名 ' , `password` CHAR ( 32 ) NOT NULL comment ' 密码 ' , `points` INT ( 10 ) NOT NULL DEFAULT ' 0 ' comment ' 积分 ' , PRIMARY KEY (`id`) ) ENGINE = MYISAM; 等级表 CREATE TABLE `bbs`.` level `( `id` INT ( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT comment ' 等级id ' ,

MySQL数据库表设计规范

大兔子大兔子 提交于 2020-08-19 17:41:35
一、数据库设计 1、一般都使用 INNODB 存储引擎,除非读写比率<1%,才考虑使用 MYISAM 存储引擎;其 他存储引擎请在 DBA 的建议下使用。 2、Stored procedure (包括存储过程,函数,触发器)对于 MYSQL 来说还不是很成熟, 没有完善的出错记录处理,不建议使用。 3、UUID(),USER()这样的MySQL INSIDE 函数对于复制来说是很危险的,会导致主备数据不一致,所以请不要使用。如果一定要使用UUID作为主键,让应用程序来产生。 4、请不要使用外键约束,如果数据存在外键关系,请在程序层面实现。 5、必须采用 UTF8 编码。 二、数据库对象设计规范 1、表 设计 a)在设计时尽量包含两个日期字段:crt_time(创建日期),upd_time(修改日期)且 非空, 对表的记录进行更新的时候,必须包含对 upd_time字段的更新。 b)必须要有主键,主键尽量用自增字段类型,推荐类型为INT或者BIGINT类型。 c)需要多表join的字段,数据类型保持绝对一致。 d)Mysql 的表尽量设置成 KV(Key-Value)结构,这样便于扩展和维护。 e)当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表(主要是为了性能考虑)。 f)当字段的类型为枚举型或布尔型时,建议使用 char(1)类型。 g)同一表中

mysql配置文件-my-innodb-heavy-4G.cnf中文注释

给你一囗甜甜゛ 提交于 2020-08-18 06:39:42
#BEGIN CONFIG INFO #DESCR: 4GB RAM, InnoDB only, ACID, few connections, heavy queries #TYPE: SYSTEM #END CONFIG INFO # # This is a MySQL example config file for systems with 4GB of memory # running mostly MySQL using InnoDB only tables and performing complex # queries with few connections. # 这是一个mysql配置文件的示例:要求系统内存4G, 运行的mysql大多用的是InnoDB数据库引擎,仅仅少量连接的表和复杂查询 # MySQL programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those # locations. For information about these locations, see: # http://dev.mysql.com/doc/mysql