
MySQL实战45讲学习笔记基础架构
今天开始把《MySQL实战45讲》的知识做一笔记,在加深印象的同时,希望对其它人也有所帮助。 大体来说,Mysql可分为Server层和存储引擎层两大部分,如图: 其中,Serve层包括连接器、查询缓存、分析器、优化器、执行器以及所有的内置函数(如:日期时间函数等);存储引擎层负责数据的存...
2024-01-10
MySQL实战45讲之基础篇flowers
本文主要记录学习MySQL实战45讲之基础篇过程中一些新的收获,以及总结主要内容。其中包括SQL如何运行、日志系统、事务隔离、索引和锁等。 前言本文主要记录学习MySQL实战45讲之基础篇过程中一些新的收获,以及总结主要内容。其中包括SQL如...
2024-01-10
【MySQL实战】索引
主键索引的叶子节点存的是整行数据。在 InnoDB 里,主键索引也被称为聚簇索引(clustered index)。非主键索引的叶子节点内容是主键的值。在 InnoDB 里,非主键索引也被称为二级索引(secondary index)。主键索引与普通索引的区别在于,主键索引不需要回表遍历,普通索引在普通索引拿到索引值后,需要...
2024-01-10
MySQL实战学习(二)
redo log当数据库有一条记录需要更新时,InnoDB引擎会先把记录写到redolog中,同时更新内存。这个时候就算是更新完成了,同时,InnoDB会在适当时刻将这个操作记录更新到磁盘里面。InnoDB 的 redo log 是固定大小的,比如可以配置为一组 4 个文件,每个文件的大小是 1GB,那么这块“粉板”总共就可以记录 4...
2024-01-10
MYSQL建表规则
建立表规约 【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。说明:MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、表名、字...
2024-01-10
0618_MySQL学习笔记
加号 +Mysql中加号只能做运算符select 100+90 ==> 190 select "100"+90 ==> 190 如果有一个是字符串,那么尝试转换成数值型,转换成功select "jack" + 90 ==> 90 转换失败则为0select null + 90 ==> null 只有任一个为null结果就是null_ 表示单个字符select * from person where name like "__a_b%"; 表示查找名字第三个字符为a,第五...
2024-01-10
MySQL查询优化的5个实用技巧
本文总结分析了MySQL查询优化的技巧。分享给大家供大家参考,具体如下:熟悉SQL语句的人都清楚,如果要对一个任务进行操作的话,SQL语句可以有很多种相关写法,但是不同的写法查询的性能可能会有天壤之别。本文列举出五个MySQL查询优化的方法,当然,优化的方法还有很多。1、优化数据类型MyS...
2024-01-10
MySQL学习笔记(26):日志
本文更新于2020-05-03,使用MySQL 5.7,操作系统为Deepin 15.4。目录错误日志二进制日志查询日志慢查询日志其他日志分析工具MySQL有4种日志:错误日志、二进制日志(BINLOG)、查询日志、慢查询日志。错误日志错误日志记录了mysqld的启动和停止,以及运行过程中发生的严重错误,其格式为纯文本,默认...
2024-01-10
MySQL管理和实用程序
让我们看一下MySQL中的管理程序和实用程序,并了解如何使用它们-ibd2sdi它是从InnoDB表空间文件中提取序列化字典信息(SDI)的实用程序。所有持久性InnoDB表空间文件中都存在SDI数据。ibd2sdi可以在运行时或服务器离线时使用。校验和它打印InnoDB文件的校验和。它读取一个InnoDB表空间文件,计算每个页面的...
2024-01-10
记一次MySQL的优化案例
一 背景 有赞的每个OLTP数据库实例上会设置一个sql-killer进程用于kill 掉执行时间超过一定阈值的sql。下午开发接收到sql被kill的报错,一起帮助开发排查,本文介绍该案例。二 场景分析表结构:CREATE TABLE `xxx_info` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `user_id` bigint(20) unsigned NOT ...
2024-01-10
MySQL学习笔记(13):锁和事务
本文更新于2019-09-22,使用MySQL 5.7,操作系统为Deepin 15.4。目录锁锁概述MyISAM表级锁InnoDB行级锁InnoDB表级锁死锁事务事务概述InnoDB事务分布式事务锁锁概述MyISAM和MEMORY存储引擎使用表级锁。BDB存储引擎进使用页级锁,但也支持表级锁。InnoDB存储引擎默认使用行级锁,也支持表级锁。表级锁:开销小,...
2024-01-10
MySQL优化(5):分区
分区:分区也是MySQL优化中的一个重要方式将一个表中的数据和索引,分散到不同的文件中进行存储通常情况下,一个表,对应一组数据和索引文件,一个表的数据和索引集中存储在这组文件中 当一个表出现了大量的记录时,可以将其分布到不同的数据和索引文件中进行存储Innodb来说,一个表对应...
2024-01-10
在选择查询中选择MYSQL
您好!我有一个需要输出屏幕数据的查询。 每个屏幕有4个展位可供展示。我需要一个查询有一个结果(因为我只有一个屏幕),并有4个展位(怎么我分配的4个展位)在选择查询中选择MYSQL这里是我的查询:$result = DB::select(" SELECT `A`.`scr_name`, `A`.`mission_id`, `B`.`booth_id`, `E`.`name` ...
2024-01-10
MYSQL通过升序和降序排序
我有一个带有产品的mysql表。这些产品具有类别ID和名称。我想做的是按类别ID顺序降序排列,然后按产品名称升序排列。SELECT * FROM `products` ORDER BY `products`.`product_category_id`,`naam` DESC我想要的是SELECT * FROM `products` ORDER BY `products`.`product_category_id`,`naam` DESC,ASC不幸的是,这是行不通的。甚至可以在mysql...
2024-01-10
史上更全的MySQL高性能优化实战总结!
作者 :惨绿少年来源:http://clsn.io/clsn/lx287.html一、前言MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够...
2024-01-10
MYSQL大量写入问题优化详解
摘要:大家提到Mysql的性能优化都是注重于优化sql以及索引来提升查询性能,大多数产品或者网站面临的更多的高并发数据读取问题。然而在大量写入数据场景该如何优化呢?今天这里主要给大家介绍,在有大量写入的场景,进行优化的方案。总的来说MYSQL数据库写入性能主要受限于数据库自身的配...
2024-01-10
MySQL学习笔记(11):存储过程和函数
本文更新于2019-06-23,使用MySQL 5.7,操作系统为Deepin 15.4。目录SQL语句创建存储过程或函数修改存储过程或函数删除存储过程或函数调用存储过程或函数变量、条件、处理、游标变量条件处理游标流程控制IFCASELEAVEITERATELOOPWHILEREPEAT示例SQL语句创建存储过程或函数创建存储过程:CREATE PROCEDURE name ({[IN|OUT...
2024-01-10
在MySQL中求和对应的重复记录
让我们首先创建一个表-mysql> create table DemoTable -> ( -> StudentName varchar(20), -> StudentMarks int -> );使用插入命令在表中插入一些记录-mysql> insert into DemoTable values('Chris',50);mysql> insert into DemoTable values('David',70);mysql> insert into DemoTable values('...
2024-01-10
PHP MYSQL实现登陆和模糊查询两大功能
本文使用的软件版本如下:PHP版本 5.5.12;MYSQL版本 5.6.17;Apache 2.4.9 用的wampserver一、PHPMYSQL实现登陆一共含有两个文件:login.php和logincheck.php;表单代码:<form action="logincheck.php"method="post"> Yonghu:<inputtype="text" name="username" /> <br /> Mima:<input type="password" name="pas...
2024-01-10
MySQL横纵表相互转化操作实现方法
本文实例讲述了MySQL横纵表相互转化操作实现方法。分享给大家供大家参考,具体如下:先创建一个成绩表(纵表)create table user_score( name varchar(20), subjects varchar(20), score int);insert into user_score(name,subjects,score) values('张三','语文',60);insert into user_score(name,subjects,score) values('张三','数...
2024-01-10
在MySQL中切换TINYINT字段
MySQL使用数据类型TINYINT来存储布尔值。MySQL将值存储为TINYINT(1),该值与位相同,因此该值为0(假)或1(真)。使用布尔型字段可能非常有用,但是在处理中可能会很昂贵,因为更改您必须查询数据库的值,找出字段的值然后采取相应措施。这是一个简单的MySQL查询,可用于切换TINYINT字段中已经存在的...
2024-01-10
MySQL查询返回最近20条记录中的5条随机记录?
为此,您需要使用ORDER BY来订购记录。与使用RAND()获得随机记录和LIMIT 5,因为我们希望只显示5个随机记录。让我们首先创建一个表-mysql> create table DemoTable773 (StudentId int);使用插入命令在表中插入一些记录-mysql> insert into DemoTable773 values(100);mysql> insert into DemoTable773 values(200);mysql> insert into DemoTa...
2024-01-10
MYSQL不正确的DATETIME格式
我有一个使用Doctrine 1的应用程序,并且update_datetime通过生成对象的字段newZend_Date->getIso()。它工作了好几年,但现在我有了一个新的笔记本,Doctrine尝试将DATETIME字段作为字符串插入,"2013-07-12T03:00:00+07:00"而不是"2013-07-1200:00:00"完全奇怪的普通MySQL datetime格式。完全相同的代码可以在另一台计算机上正常...
2024-01-10
检索每个组中的最后一条记录-MySQL
有一个messages包含数据的表,如下所示:Id Name Other_Columns-------------------------1 A A_data_12 A A_data_23 A A_data_34 B B_data_15 B B_data_26 C C_data_1如果我运行查询select * from messages group by name,我将得到的结果为:1 ...
2024-01-10
如何在MySQL中插入带双引号的记录?
要插入双引号的记录,请使用反斜杠(\),如以下语法所示:语法insert into yourTableName values('\"yourValue\"');让我们首先创建一个表-mysql> create table DemoTable -> ( -> Name varchar(20) -> );使用插入命令在表中插入一些记录-mysql> insert into DemoTable values('\"John\"');mysql> insert into DemoTable values...
2024-01-10
