分类目录归档:数据库

MySQL六十六问


MySQL六十六问

1.什么是内连接、外连接、交叉连接、笛卡尔积呢?

  • 内连接(inner join):取得两张表中满足存在连接匹配关系的记录。
  • 外连接(outer join):不只取得两张表中满足存在连接匹配关系的记录,还包括某张表(或两张表)中不满足匹配关系的记录。
  • 交叉连接(cross join):显示两张表所有记录一一对应,没有匹配关系进行筛选,它是笛卡尔积在SQL中的实现,如果A表有m行,B表有n行,那么A和B交叉连接的结果就有m*n行。
  • 笛卡尔积:是数学中的一个概念,例如集合A={a,b},集合B={1,2,3},那么A✖️B={,,,,,,}。

2.那MySQL 的内连接...

Read more

什么是分库分表?


1.什么是分库分表?

简单的说就是,通过某种特定的条件,将我们存放在共一个数据库中的数据分散存放到多个数据库(主机)上,以达到分散单台设备负载的效果。

分库:就是一个数据库分成多个数据库,部署到不同机器。

图片

分表:就是一个数据库表分成多个表。

图片

2.为什么需要分库分表?

2.1为什么需要分库呢?

如果业务量剧增,数据库可能会出现性能瓶颈,这时候我们就需要考虑拆分数据库。从这几方面来看:

磁盘存储

  • 业务量剧增,MySQL单机磁盘容量会撑爆,拆成多个数据库,磁盘使用率大大降低。

并发连接支撑

  • 我们知道数据库连接是有限的。在高并发的场景下,大量请求访问数据库,MySQL单机是扛不住的...

Read more

MySQL 锁


1 锁的概述

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

image-20240905151233838

查看锁

select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from
performance_schema.data_locks;

要其他手动开启的...

Read more

MySQL函数


MySQL函数,是一种控制流程函数,属于数据库用语言。

MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数,可以简化用户的操作。

一、数学函数

1.1、函数概述

MySQL函数是MySQL数据库提供的内部函数。这些内部函数可以帮助用户更加方便的处理表中的数据。

1.2、数学函数概述

数学函数是MySQL中常用的一类函数。主要用于处理数字,包括整型、浮点数等。

1.3、常用数学函数

1.3.1、abs()

abs(X):返回X的绝对值

mysql> select abs(-32...

Read more

MySQL二进制安装脚本


MySQL二进制安装脚本

安装版本:MySQL8.0.20

#!/bin/bash

# 设置安装版本
MYSQL_VERSION=mysql-8.0.20-linux-glibc2.12-x86_64

# 设置下载地址
DOWNLOAD_URL=https://downloads.mysql.com/archives/get/p/23/file
# DOWNLOAD_URL=http://192.168.123.200/Software

# 设置MySQL的root密码
MYSQL_PASSWORD=root123

# 设置安装路径
MYSQL_PATH=/usr/local...

Read more

SQL练习题(二)


多表查询练习

练习题:

创建两张,一个是商品表 products,另一个是订单表 orders。请按照以下要求进行操作:

1.创建商品表(products)和订单表(orders),其中商品表包含字段:id(自动增长主键)、name(商品名称)、price(商品价格);

2.订单表包含字段:id(自动增长主键)、product_id(关联商品表的商品ID)、quantity(商品数量)、total_price(订单总价)。

3.将订单表中的 product_id 与商品表的 id 建立外键关联。

参考答案:

创建商品表和订单表:

-- 创建商品表
CREATE TABLE product...

Read more

SQL练习题(一)


SQL基础练习题

  1. 创建一个名为 “products” 的表,包含 id(自增主键)、name、price 和 quantity 字段。
  2. 插入一条 id 为 1,name 为 “Apple”,price 为 2.5,quantity 为 10 的记录到 “products” 表中。
  3. 查询 “products” 表中所有的记录。
  4. 更新 id 为 1 的记录,将 price 改为 2.75。
  5. 删除 id 为 1 的记录。
  6. 插入三条新的产品记录,要求至少包含两个不同的产品名称,并确保至少有一个产品的价格小于 10,至少一个以 “A” 开头的产品。
  7. 查询 “products” 表中所有价格大于等...

Read more

MySQL日志


一、MySQL8 日志配置介绍

MySQL8 日志除了用于发现错误之外,它在数据复制、数据恢复、操作审计、以及数据永久性和一致性方面都发挥着重要作用。学会如何查看和配置 MySQL 日志,将有效的提升您的数据库技能和快速解决问题的能力。

1.1、MySQL8 日志分类

MySQL8 数据库主要有六种类型的日志文件,用来存储不同的信息,分别是:

  • 二进制日志:记录更改数据的语句,用于数据同步和无损恢复;
  • 错误日志 :记录 MySQL 服务异常,用于解决服务器故障;
  • 一般查询日志:记录客户端连接发送给数据库的操作指令;
  • 慢查询日志:记录超过指定时间的查询语句,方便优化 SQL;
  • 中继日志:主...

Read more

MyCAT 2从入门到放弃(一)


MyCAT 2 从入门到实战(一)

img

1. 【熟悉】MyCAT2简介

1.1 什么是MyCAT

MyCAT是目前最流行的分布式数据库中间插件,是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器。前端用户可以把它看作一个数据库代理,用MySQL客户端工具和命令行访问,其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

MyCAT发展到目前,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Serve...

Read more

Redis主从模式


Redis有两种不同的持久化方式,Redis服务器通过持久化,把Redis内存中持久化到硬盘当中,当Redis宕机时,我们重启Redis服务器时,可以由RDB文件或AOF文件恢复内存中的数据。

不过持久化后的数据仍然只在一台机器上,因此当硬件发生故障时,比如主板或CPU坏了,这时候无法重启服务器,有什么办法可以保证服务器发生故障时数据的安全性?或者可以快速恢复数据呢?想做到这一点,我们需要再了解Redis另外一种机制:主从复制。

一、主从复制概述

1.1、单机问题

1.1.1、机器宕机

如果发生机器宕机(主板烧坏、硬盘损坏、内存损坏等),短时间内我们也无法修复,我们就会考虑将redis迁...

Read more