mysql
文章平均质量分 93
四郎别认输
这个作者很懒,什么都没留下…
展开
-
mysql二进制日志以及其对复制的影响
mysql的日志类型二进制日志记录了所有对Mysql数据库的修改事件,包括增删改查事件和对表结构的修改事件基于段的格式binlog_format=STATEMENT该格式日志记录量相对较小,节约磁盘及网络I/O只对一条记录修改或者插入,row格式所产生的日志量小于段产生的日志量必须记录上下文信息,保证语句在从服务器上执行结果和在主服务器上相同,有可能出现主从不一致基于行的日志格式binlog_format=ROW可以避免MySQL复制中出现的主从不一致问题原创 2020-08-23 15:19:58 · 160 阅读 · 0 评论 -
mysql架构学习——数据库结构优化笔记
数据库结构优化目的减少数据冗余 尽量避免数据维护中出现更新,插入和删除异常设计步骤需求分析:全面了解产品设计的存储需求,数据处理需求,数据的安全性和完整性 逻辑设计:设计数据的逻辑存储结构,数据实体之间的逻辑关系,解决数据冗余和数据维护异常 物理设计:根据所使用的数据库特点进行表结构设计逻辑设计什么是反范式化设计为了性能和读取效率的考虑而适当的对数据库设计范式的要求进行违反,而允许存在少量的数据冗余(用空间换时间)范式化设计的优缺点优点可以减少数据冗余 范式化的更原创 2020-08-19 14:38:02 · 86 阅读 · 0 评论 -
经典sql问题——每门课都大于X分
测试数据create table sql01_score( id int not null auto_increment primary key, name varchar(30) not null comment '学生姓名', course varchar(50) comment '课程名称', grade int comment '成绩' )engine=InnoDB default charset=utf8; insert into sql01_score(name, course, g..原创 2020-08-19 10:46:30 · 272 阅读 · 0 评论 -
数据库简答题(2)
【简答题】假设有如下实体:学生:学号、姓名、性别、年龄;课程:课程编号、课程名;教师:教师号、姓名、性别、职称;单位:单位名称、电话。上述实体中存在如下联系: 一个学生可选修多门课程,一门课程可为多个学生选修; 一个教师可讲授多门课程,一门课程可为多个教师讲授; 一个单位可有多个教师,一个教师只能属于一个单位; 一个单位可以开设多门课程,一个课程只能属于一个单位; 一个单位可有多名学生,一个学生只能属于一个单...原创 2020-05-23 16:11:30 · 2864 阅读 · 0 评论 -
InnoDB的锁机制原理学习
共享锁(读锁,S锁)该锁只允许其他事务操作读数据,但不能修改。select * from account where id = 1 lock in share mode;排他锁(写锁,X锁)在事务中进行DML操作时会有排他锁当该条数据上了排他锁后,其他事务读写等一切操作无法实行(但其他事务操作可以读取该数据在快照中的值)for update//获取排他锁innoDB的行锁和表锁行锁:给索引项加锁表锁:给没索引的项加锁意向共享锁(IS锁)意向排他锁(IX锁)原创 2020-08-06 23:00:41 · 150 阅读 · 0 评论 -
MySQL事务的四种隔离级别及相关语句
MySQL事务的四种隔离级别隔离级别读未提交会读取到事务尚未提交或回滚的数据,造成脏读set tx_isolation='read-uncommitted';读已提交只会读取事务已提交的数据,但是不可重复读set tx_isolation='read-committed';可重复读解决了重复读的问题,在事务开始时,所使用现有的数据固定在该事务开始的那一刻,但是会出现幻读set tx_isolation='repeatable-read';串行化解决了幻读原创 2020-08-03 20:30:18 · 102 阅读 · 0 评论 -
MySQLslap的参数整理
MySQLslap的参数整理--auto-generate-sql 由系统自动生成SQL脚本进行测试 --auto-generate-sql-add-autoincrement 在生成的表中增加自增ID --auto-generate-sql-load-type 指定测试中使用的查询类型 --auto-generate-sql-write-number 指定初始化数据时生成的数据量 --concurrency 指定并发线程的数量 --engine 指定要测试表的存储引擎,可以用逗号分割多个存储原创 2020-07-16 21:18:59 · 341 阅读 · 0 评论 -
mysql架构——基准测试
基准测试定义是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响和压力测试的区别压力测试需要针对不同主题,所适用的数据和查询也是真实用到的基准测试可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没关系目的建立MySQL服务器的性能基准线模拟比当前系统更高的负载,以找出系统的扩展瓶颈测试不同的硬件,软件和操作系统配置证明新的硬件设备是否配置正确测试方式:系统测试,MySQL测试原创 2020-07-16 17:34:59 · 79 阅读 · 0 评论 -
mysql架构学习——MySQL的配置参数
mysql的配置参数获取配置信息路径命令行参数 配置文件MySQL配置参数的作用域全局参数:set global 参数名 = 参数值;set @@global.参数名 := 参数值; 会话参数:set[session]参数名=参数值; set @@session.参数名 := 参数值;内存配置相关参数确定可以使用的内存上限 确定MySQL的每个连接使用的内存sort_buffer_size:排序缓冲区大小join_buffer_size:连接缓冲区大小read_buff.原创 2020-07-15 19:05:27 · 142 阅读 · 0 评论 -
MySQL架构学习——存储引擎
MySQL架构学习——存储引擎MyISAM存储引擎表由MYD和MYI组成特性并发锁与锁级别 表损坏修复(check table 表名 repair table 表名) 支持索引类型 支持数据压缩(命令行 mysiampack -b (-f强制压缩) 表名)限制版本5.0之前默认表大小为4G适用场景非事务型应用 只读类应用 空间类应用InnodbInnodb使用表空间进行数据存储innodb_file_per_tableON:独立表空间:表名.ibdO.原创 2020-07-14 21:41:48 · 104 阅读 · 0 评论 -
mysql架构学习——硬件对数据库的影响
CPUMySQL不支持多CPU对同一SQL处理(更快的CPU)衡量数据库处理能力的指标QPS:每秒同时处理SQL的数量不要使用32位操作系统内存越多越好,但在增加有限当内存的容量大于文件的大小时,再增加也无法提升数据库的性能MyISAM将索引存入内存,数据通过操作系统缓存Innodb将索引和数据都放入内存缓冲缓存对写入的易处可以将多次小的写入存入内存缓存再合并成一次写入选择内存时选择主板支持的最大内存磁盘传统机器硬盘磁盘的读取速度=访问时间+传输时原创 2020-07-12 13:41:47 · 269 阅读 · 0 评论 -
mysql架构学习——sql执行过程
mysql架构学习——sql执行过程mysql基础架构连接器用于连接用户和mysql数据库查询缓存mysql在得到一个执行查询请求后,会首先去查询缓存中查找,是否执行过这条sql,之前执行过的结果会以键值对的形式保存键——sql语句值——查询结果类似于操作系统缓存的工作机制分析器若没有命中则会执行SQL语句分析器进行语法分析优化器决定使用的索引,连接,执行效率最高的方案执行器执行SQL语句SQL的执行优先级FROM>ON>J原创 2020-07-10 20:15:17 · 91 阅读 · 0 评论 -
mysql架构学习———大表与大事务
mysql架构学习大表记录行数巨大,单表超过千万行表数据文件巨大,表数据文件超过10G大表会造成的影响慢查询:很难在一定的时间内过滤出所需要的数据 对DDL操作产生影响:建立索引需要很长的时间 对DDL操作产生影响:修改表结构需要长时间锁表(造成长时间的主从延迟,影响正常的数据操作)处理数据库中的大表分库分表把一张大表分成多个小表定期进行历史归档大事务运行时间比较长,操作的数据比较多的事务大事务造成的影响锁定太多的数据,造成大量的阻塞和锁超时 回滚所需时间原创 2020-07-04 14:36:58 · 1178 阅读 · 0 评论 -
数据库概论整理总结4
数据库系统概论整理总结4第8章——数据库编程过程化SQL有两种类型——命名块和匿名块优点:运行效率高,提供了在服务器快速执行SQL语句的有效途径 存储过程降低了客户机和服务器之间的通信量 方便企业规划语句:create or procedure 过程名([参数1,参数2......])as <过程化SQL块>执行存储过程使用call或者perform第10章——数据库恢复技术事务事务是用户定义的一个数据库操作序列,这些操作要么全做,要么不做,是一个不可分原创 2020-06-23 19:44:59 · 141 阅读 · 0 评论 -
数据库概论复习总结3
数据库概论复习总结3第6章——关系数据理论数据依赖一个关系内部属性域属性之间的一种约束关系函数依赖和多值依赖第一范式(1NF)每一个分量必须是不可分的数据项,满足了这个条件的关系模式问题:数据冗余,更新冗余,插入异常,删除异常规范化函数依赖:x->y为x函数确定y或者y依赖于x,如果y属于x则是平凡的函数依赖,反之则是非平凡的函数依赖若x的任意子集都无法确定y为x完全函数依赖,反之为y对x部分函数依赖范式一个低一级范式的关系模式通过模式分解可以转换为若干原创 2020-06-22 13:22:49 · 533 阅读 · 0 评论 -
数据库系统概论整理总结2
数据库系统概论整理总结2第三章sql的特点:综合统一,高度非过程化,面向集合的操作方式,以同一种语法方式提供多种使用方式。数据字典:关系数据库管理系统内部的一组记录了数据库中所有的定义信息的系统表。基本表:是独立存在的表,在SQL中,一个关系对应于一个表视图:是从一个或多个基本表所导出的表。视图本身并不独立,是一个虚化的表视图的优点视图能够简化用户的操作 视图能够使用户能以多种角度看待同一数据,增加灵活性 视图对重构数据库提供了一定的逻辑独立性 视图能够对机密数据提供安全保原创 2020-06-21 20:19:49 · 222 阅读 · 0 评论 -
mysql的truncate
MySQL 提供了 DELETE 和 TRUNCATE 关键字来删除表中的数据。本节主要讲解 TRUNCATE 关键字的使用。TRUNCATE关键字用于完全清空一个表。其语法格式如下:TRUNCATE [TABLE] 表名其中,TABLE 关键字可省略。例 1新建表 tb_student_course,插入数据并查询,SQL 语句和运行结果如下:mysql> CREATE TABLE `tb_student_course` ( -> `id` int(4) NOT.转载 2020-06-21 14:38:09 · 563 阅读 · 0 评论 -
mysql数据库存储引擎
我们在《MySQL存储引擎有哪些》一节中介绍了MySQL中几种主要的存储引擎以及它们的使用特性,本节将介绍如何根据不同的应用场景去选择合适的存储引擎。在使用 MySQL 数据库管理系统时,选择一个合适的存储引擎是一个非常复杂的问题。不同的存储引擎都有各自的特性、优势和使用的场合,正确的选择存储引擎可以提高应用的使用效率。为了能够正确地选择存储引擎,必须掌握各种存储引擎的特性。下面重点介绍几种常用的存储引擎,它们对各种特性的支持如下表所示。MySQL存储引擎特性汇总和对比 特性 ...转载 2020-06-21 09:10:18 · 123 阅读 · 0 评论 -
mysql数据库数据类型汇总
mysql数据库数据类型汇总整数类型整数类型 类型名称 说明 范围 存储需求 TINYINT 很小的整数 -128〜127 1个字节 SMALLINT 小的整数 -32768〜32767 2个字节 MEDIUMINT 中等大小的整数 -8388608〜8388607 3个字节 INT (INTEGHR) 普通大小的整数 -2147483648〜2147483647 4个字节 BIGINT原创 2020-06-20 19:54:13 · 198 阅读 · 0 评论 -
mysql的my.ini
在《MySQL安装后的目录结构介绍》一节中,我们了解到 my.ini 是 MySQL 数据库中使用的配置文件,MySQL 服务器启动时会读取这个配置文件,我们可以通过修改这个文件,达到更新配置的目的。本节以 Windows 系统下的 my.ini 配置文件为样板,讲解 MySQL 配置文件中的参数。一般情况下,my.ini 在 MySql 安装的根目录下,也有可能在隐藏文件夹“ProgramData”下面。为了方便读者阅读,我们省略了 my.ini 文件中的注释内容。下面分开介绍 my.ini转载 2020-06-20 15:43:47 · 614 阅读 · 0 评论 -
数据库概论整理总结
第一章:绪论数据库的4个基本概念数据:描述事物的符号记录 数据库:存放数据的仓库,数据库是长期储存在计算机内,有组织的,可共享的大量数据的集合。基本特点:永久存储,有组织,可共享 数据库管理系统(DBMS):是一种计算机的基础软件,功能有:数据定义,数据组织,存储和管理,数据操纵,事务管理和运行管理,建立和维护功能,其他功能 数据库系统:由数据库、数据库管理系统、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统数据库管理技术的产生和发展人工管理阶段->文件系统阶段-&g原创 2020-06-20 14:53:12 · 365 阅读 · 0 评论 -
数据库实验——简单数据库应用系统设计与实现
数据库实验——简单数据库应用系统设计与实现某学生宿舍管理系统,涉及的部分信息如下:学生:学号,姓名,性别,专业,班级。寝室:寝室号,房间电话。管理员:员工号,姓名,联系电话。其中:每个寝室可同时住宿多名学生,每名学生只分配一个寝室;每个寝室指定其中一名学生担当寝室长;每个管理员同时管理多个寝室,但每个寝室只有一名管理员。每组同学从以上选题中任选一个进行相应的设计与实现。要求如下:(1)从简单的选题语义出发,按照数据库设计步骤,分别完成如下内容:概念设计(ER模型),给出满足需求的最终全局ER原创 2020-06-08 22:49:31 · 11103 阅读 · 1 评论 -
数据库实验——触发器与存储过程
数据库实验——触发器与存储过程掌握某主流DBMS的SQL编程语言,在前面创建的数据库基础上,定义BEFORE(for)触发器和AFTER触发器;掌握数据库存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。实验步骤1、创建一个不带参数的简单存储过程(1)创建存储过程sp_avggrade,实现查询每门课程学生的平均成绩的功能;create PROC sp_avggradeasbegin select AVG(grade) from sc group by ...原创 2020-06-08 17:10:19 · 2542 阅读 · 1 评论 -
sql使用like模糊查询的一些记录
sql的like查询数据库:sql server多个条件的模糊查询语句:select * from 表名 where 条件字段 like '[条件1|条件2...]%'示例:查询名字以张或方为姓的学生指定长度的模糊查询语句:select * from student where 列名 like '__'//一个'_'代表一个字长select * from student where 列名 like 条件 and len(列名) = '指定长度'示例:查询名字以原创 2020-05-24 23:34:13 · 240 阅读 · 0 评论 -
mysql优化思路学习——条件字段
条件字段优化方案函数操作对条件字段做函数操作不走索引——因为索引树中存的是对应的实际值和主键值,使用函数处理的值无法匹配优化方案:将条件字段的值变为与数据库中存储的值匹配的形式隐式转换什么是隐式转换当操作符与不同类型的操作对象一起使用时,就会发生类型转换以使操作兼容,某些转换是隐式的隐式转换会导致sql不走索引因为隐式转换发生时,其实是对索引字段进行函数操作,使其类型与查询值相同,对索引字段进行函数操作导致无法使用索引查询,而采用效率最低的全表查询优化方案:在写..原创 2020-05-22 23:47:46 · 215 阅读 · 0 评论 -
mysql优化——数据导入优化
数据导入对于批量数据导入的优化思路插入操作的耗时连接:30%向服务器发送查询:20%解析查询:20%插入行:10%*行的大小插入索引:10%*索引数结束:10%由此可见客户端与服务端通信所耗费的时间最多,因此应该通过一次插入多个值来减少插入次数从而提高效率大批量数据导入优化方案:有大批量导入时,推荐一条insert语句插入多行数据关闭自动提交模式(自动提交模式下,每次插入语句为一个事务,进行一次通信,极其耗时)参数调整影响MYSQL写入速度的主要两个参..原创 2020-05-22 23:43:31 · 226 阅读 · 0 评论 -
数据库简答题(1)
【简答题】学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教员,其中每个教员各带若干毕业生;每个班有若干学生,每个学生选修若干课程,每门课可由若干学生选修。各实体属性为: 学校:学校名 系:系编号,系名 班级:班级号,班级名 教研室:教研室号,教研室 学生:学号,姓名,学历 课程:课程号,课程名 教员:职工号,姓名,职称请用E-R图画出此学校的概念模型,并转化为关系模式,要求关系模式能合并的尽量合并。如有错误请指证...原创 2020-05-19 22:19:40 · 2024 阅读 · 0 评论 -
PHP的软删除
软删除——<?php$pdo=newPDO('mysql:host=127.0.0.1;dbname=php','root','root');$sql='UPDATE`staff`SET`is_show`=0whereid=2';$stmt=$pdo->prepare($sql);$stmt->exe...原创 2020-04-27 22:45:06 · 372 阅读 · 0 评论 -
Mysql的B+树索引
目录MySQL索引机制索引的本质索引的目标索引的工作流程wMySQL支持的索引的数据结构hash索引B+树索引为什么MySQL选择B+树作为索引的数据结构平衡二叉搜索树使用平衡二叉搜索树的弊端B-树(多路平衡树)发散思考为什么不是什么字段都适合添加索引为什么MySQL推荐我们使用自增id作为主键索引B+树(B-树加强版)I/O能力强于...原创 2020-01-06 16:11:46 · 352 阅读 · 1 评论 -
MySQL8.0版本新特性学习
目录变更内容:账户与安全用户创建和授权认证插件更新密码管理角色管理优化器索引隐藏索引(不可见索引)降序索引函数索引通用表表达式非递归CTE递归CTE递归限制窗口函数(分析函数)InnoDB增强集成数据字典原子DDL操作自增列持久化死锁检查控制锁定语句选项其他改进功能JSON增强内联路径操作符JSON...原创 2020-01-04 14:02:48 · 303 阅读 · 1 评论 -
sql题目记录——178. 分数排名——Mysql8.0新特性之窗口函数
今天在力扣上刷题时碰到一题编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。+----+-------+| Id | Score |+----+-------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 ...原创 2020-01-03 15:27:59 · 183 阅读 · 0 评论 -
高性能MySQL阅读总结——第五天——第一章Mysql架构与历史(5)
所看内容:主要讲了MySQL的发展史,就不做记录了。——转换表的引擎1.使用AlTER语句AlTER TABLE 表名 ENGINE = 引擎名;注:当讲InnoDB的表转换为MyISAM的表时,原表的一切特性(事务,行锁之类的)会全部丢失,即使之后转换回原引擎,也无法恢复这些特性。2.手动的导入与导出利用mysqldump导出数据,再手动修改create table ...原创 2020-01-03 13:19:30 · 94 阅读 · 0 评论 -
高性能MySQL阅读总结——第四天——第一章Mysql架构与历史(4)
所看内容:InnoDB存储引擎:支持高并发,使用间隙锁策略防止幻读出现,表是使用聚簇索引建立的。(还不知道聚簇索引是什么,之后会学到的)MYISAM存储引擎:不支持事务和行级锁选择存储引擎的四个因素:事务备份崩溃恢复特有的特性...原创 2020-01-02 15:14:17 · 106 阅读 · 0 评论 -
sql题目练习2——177. 第N高的薪水
编写一个 SQL 查询,获取 Employee 表中第n高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+| 1 | 100 || 2 | 200 || 3 | 300 |+----+--------+例如上述Employee表,n = 2时,应返回第二高的薪水200。如果不存...原创 2020-01-02 14:33:45 · 246 阅读 · 0 评论 -
sql题目练习记录
看了很久的mysql性能优化,结果今天做了力扣上的sql题,发现简单题就吃力了。。。自己有点本末倒置了,所以从今起,每天都要找sql语句的题目写,巩固自己的基础。力扣上的sql题:1.编写一个 SQL 查询,获取 Employee表中第二高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+| 1 | ...原创 2020-01-02 08:19:55 · 92 阅读 · 0 评论 -
高性能MySQL阅读总结——第三天——第一章Mysql架构与历史(3)
所看内容:——多版本并发控制(MVCC)MVCC的实现,是通过保存数据在某个时间点的快照实现的。(每个事务找这个事务开始前的那个时间点时的数据库的数据)InnoDB的MVCC是通过在每一行数据之后添加两个隐藏的列来实现的。这两个列,一个保存了该行的创建时间,另一个保存了改行的过期时间。(这个时间实际上是版本号)。MVCC只在重复读和提交读下工作。——InnoDB存储引擎In...原创 2020-01-01 09:37:30 · 163 阅读 · 1 评论 -
高性能MySQL阅读总结——第一天——第一章Mysql架构与历史(1)
今天起每天都要看,希望可以坚持下去所看内容——MySQL逻辑架构主要知识点1.三层架构1.客户端 ——处于最上层,处理连接处理、授权认证、安全等等2.MySQL服务层——处于中层,查询解析,分析,优化,一些聚合函数,存储过程等都在此层实现3.存储引擎——处于最下层,负责MySQL负责MySQL中数据的存取和提取2.优化与执行优化器的执行不关心存储引擎,但不同的存...原创 2019-12-18 08:10:00 · 125 阅读 · 1 评论