《MySQL 性能优化》之理解 MySQL 体系结构

9 篇文章 86 订阅
订阅专栏

作为专栏文章 《MySQL 性能优化》的第一篇,本文介绍 MySQL 的服务器体系结构,包括物理结构、逻辑结构以及插件式存储引擎。

实例和数据库

我们通常所说的 MySQL 数据库服务器由一个实例(instance)以及一个数据库(database)组成。实例包括一组后台进程/线程和许多内存结构,用于管理数据库;数据库由一组磁盘文件组成,用于存储数据和日志等信息。MySQL 使用典型的客户端/服务器(Client/Server)结构,下图显示了一个简单的 MySQL 体系结构:

mysql
客户端通过通过实例中的后台进程访问 MySQL 数据库。MySQL 采用单进程多线程架构,也就是说一个 MySQL 实例在操作系统中就是一个进程(mysqld)。在 Linux 系统中使用ps命令进行查看:

[root@sqlhost ~]# ps -ef|grep mysql|grep -v grep
mysql     7898     1  1 Feb03 ?        00:12:12 /usr/sbin/mysqld

严格来说,一个 MySQL 实例管理的是多个数据库(也叫模式,Schema)包括系统数据库 mysql、information_schema、performance_schema、sys 以及用户创建的数据库等。使用SHOW DATABASES或者SHOW SCHEMAS命令查看当前实例中的数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.14 sec)

数据库就像是一个容器,存储了各种对象。例如,数据表(Table)、视图(View)、存储过程(Stored Procedure)以及触发器(Trigger)等。其中,表是存储数据的主要对象。它们之间的关系如下图所示:

mysql database

MySQL 物理结构

MySQL 的物理结构主要包括两个目录:软件的安装目录和数据目录,以及配置文件和日志文件等。

mysql

📝不同平台、不同安装方式(源码安装、二进制解压)的目录结构有所不同,具体可以参考 MySQL 官方文档。

安装目录

安装目录(Base Directory)是 MySQL 服务器的安装路径,Linux 上使用 RPM 包安装的默认位置为 /usr/。安装目录中主要包含以下内容:

文件或目录描述
bin/mysql 客户端和实用程序目录
sbin/mysqld 服务器程序目录
share/man/Unix 帮助手册页目录
include/mysql/头文件目录
lib/mysql/库文件目录
share/mysql/各种字符集、语言相关的错误信息目录

我们可以使用下面的命令查看安装目录:

mysql> show global variables like "%basedir%";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| basedir       | /usr/ |
+---------------+-------+
1 row in set (0.00 sec)
数据目录

数据目录(Data Directory)是 MySQL 存储数据库文件的位置,Linux 上使用 RPM 包安装的默认位置为 /var/lib/mysql/。数据目录中主要包含以下内容:

文件或目录描述
#innodb_temp/InnoDB 会话临时表空间目录
mysql/系统数据库 mysql 文件目录
performance_schema/性能数据库 performance_schema 文件目录
sys/sys 数据库文件目录
其他子目录每个数据库对应一个文件目录,存储该数据库中的文件
auto.cnf当前服务器实例的 UUID,用于主从复制
binlog.*二进制日志 binary log 相关文件
*.pemSSL 连接相关的证书和密钥文件
ib_buffer_pool缓冲区 buffer pool 中数据页的页号转储文件
ibdata1InnoDB 表空间文件
ib_logfile0
ib_logfile1
InnoDB 事务日志(REDO)文件
ibtmp1InnoDB 临时表空间文件
mysql.ibd系统数据库 mysql 数据文件
mysql.sockUnix 套接字文件
undo_001
undo_002
InnoDB UNDO 表空间文件

我们可以使用以下命令查看数据目录:

mysql> show global variables like "%datadir%";
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.01 sec)
配置文件

MySQL 服务器进程和各种工具程序启动时,需要通过配置文件(my.cnf 或者 my.ini)读取各种参数。Linux 上使用 RPM 包安装的默认配置文件为 /etc/my.cnf,可以使用mysqld --verbose --help查看读取配置文件的顺序:

[root@sqlhost ~]# mysqld --verbose --help | grep -A 1 'Default options'
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf

服务器运行使用的所有配置选项都可以使用SHOW VARIABLES命令查看,例如以下命令可以查看 InnoDB 缓冲池相关的配置:

mysql> show variables like '%buffer_pool%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_chunk_size       | 8388608        |
| innodb_buffer_pool_dump_at_shutdown | ON             |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_dump_pct         | 25             |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_in_core_file     | ON             |
| innodb_buffer_pool_instances        | 1              |
| innodb_buffer_pool_load_abort       | OFF            |
| innodb_buffer_pool_load_at_startup  | ON             |
| innodb_buffer_pool_load_now         | OFF            |
| innodb_buffer_pool_size             | 8388608        |
+-------------------------------------+----------------+
11 rows in set (0.00 sec)

除此之外,MySQL 还使用一些其他的文件:

  • 错误日志文件,例如 /var/log/mysqld.log;
  • 慢查询日志文件,例如 /var/lib/mysql/HOSTNAME-slow.log;
  • 服务器进程 PID 文件,例如 /var/run/mysqld/mysqld.pid;

MySQL 逻辑结构

MySQL 使用典型的客户端/服务器(Client/Server)结构,逻辑结构图如下所示:

mysql logical
MySQL 体系结构大体可以分为三层:客户端、服务器层以及存储引擎层。其中,服务器层又包括了连接管理、查询缓存 、SQL 接口、解析器、优化器、缓冲与缓存以及各种管理工具与服务等。

具体来说,每个组件的作用如下:

  • 客户端,连接 MySQL 服务器的各种工具和应用程序。例如 mysql 命令行工具、mysqladmin 以及各种驱动程序等。
  • 连接管理,负责监听和管理客户端的连接以及线程处理等。每一个连接到 MySQL 服务器的请求都会被分配一个连接线程。连接线程负责与客户端的通信,接受客户端发送的命令并且返回服务器处理的结果。
  • 查询缓存 ,用于将执行过的 SELECT 语句和结果缓存在内存中。每次执行查询之前判断是否命中缓存,如果命中直接返回缓存的结果。缓存命中需要满足许多条件,SQL 语句完全相同,上下文环境相同等。实际上除非是只读应用,查询缓存的失效频率非常高,任何对表的修改都会导致缓存失效;因此,查询缓存在 MySQL 8.0 中已经被删除。
  • SQL 接口,接收客户端发送的各种 DML和 DDL 命令,并且返回用户查询的结果。另外还包括所有的内置函数(日期、时间、数学以及加密函数)和跨存储引擎的功能,例如存储过程、触发器、视图等。
  • 解析器,对 SQL 语句进行解析,例如语义和语法的分析和检查,以及对象访问权限检查等。
  • 优化器,利用数据库的统计信息决定 SQL 语句的最佳执行方式。使用索引还是全表扫描的方式访问单个表,多表连接的实现方式等。优化器是决定查询性能的关键组件,而数据库的统计信息是优化器判断的基础。
  • 缓存与缓冲,由一系列缓存组成的,例如数据缓存、索引缓存以及对象权限缓存等。对于已经访问过的磁盘数据,在缓冲区中进行缓存;下次访问时可以直接读取内存中的数据,从而减少磁盘 IO。
  • 存储引擎,存储引擎是对底层物理数据执行实际操作的组件,为服务器层提供各种操作数据的 API。MySQL 支持插件式的存储引擎,包括 InnoDB、MyISAM、Memory 等。
  • 管理工具,MySQL 提供的系统管理和控制工具,例如备份与恢复、复制、集群等。

我们使用 mysql 客户端工具连接到 MySQL 服务器:

[root@sqlhost ~]# mysql -h 192.168.56.104 -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 8.0.19 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

以上方式是通过 TCP/IP 网络协议连接到 MySQL 服务器,需要提供服务器的 IP、端口以及用户名和密码等信息。如果提供的信息不正确,将会返回错误消息。另外,我们也可以通过命名管道或者 UNIX 套接字进行连接。

连接成功之后就可以执行各种语句和命令,我们以一个查询语句为例:

SEELCT * FROM employees;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SEELCT * FROM employees' at line 1

以上语句通过 SQL 查询接口提交给服务器的处理线程,解析器进行语法检查时发现 SELECT 写成了 SEELCT,提示的是语法错误。示例表来自 《SQL 入门教程》示例数据库。

如果语句没有问题,通过解析器之后生成解析树,然后发送给优化器;优化器判断是否进行查询重写,并且根据统计信息决定访问表的方式和顺序等。我们可以通过 EXPLAIN 命名了解优化器选择的执行计划:

mysql> EXPLAIN SELECT * FROM employees;
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
| id | select_type | table     | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
|  1 | SIMPLE      | employees | NULL       | ALL  | NULL          | NULL | NULL    | NULL |  107 |   100.00 | NULL  |
+----+-------------+-----------+------------+------+---------------+------+---------+------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)

这里我们查询的是整个表的数据,因此 MySQL 采用全表扫描的方式(type = ALL)获取数据。关于执行计划的解释,可以参考 这篇文章。

最后,由存储引擎获取表中的数据;如果数据已经被缓存,可以直接从缓冲区获取。

MySQL 存储引擎

插件式存储引擎是 MySQL 的一大特点体系结构,每个存储引擎都提供了各自的功能,用户可以根据业务或者应用场景为数据表选择不同的存储引擎。也就是说,存储引擎的设置是在表级别的;因此也被称为表类型(table type)。

📝从 MySQL 5.5 之后,默认的存储引擎是 InnoDB。InnoDB 是一个通用的存储引擎,除非有特殊需求,推荐使用 InnoDB。

MySQL 插件式存储引擎结构允许在 MySQL 服务器运行时装载和卸载一个存储引擎,使用SHOW ENGINES语句可以查看当前服务器支持的存储引擎:

mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

其中,Support 列显示了是否支持该存储引擎以及默认的存储引擎。MySQL 8.0 支持的存储引擎如下:

  • InnoDB:默认的存储引擎。InnoDB 是一个事务安全(ACID 兼容)的存储引擎,支持事务的提交、回滚以及故障恢复功能。InnoDB 行级锁(无需升级到更高粒度的锁)以及类似 Oracle 的一致性非锁定读功能能够增加多用户并发性和性能。InnoDB 使用聚集索引存储用户数据,减少了常见的基于主键查询时的 I/O 操作。为了维护数据完整性,InnoDB 还支持 FOREIGN KEY 参照完整性约束。
  • MyISAM:这种类型的表占用很少的磁盘空间。表级锁限制了它的并发读/写性能,因此通常用于只读或者以读为主的 Web 应用和数据仓库。
  • Memory:将所有数据存储在 RAM 中,用于需要快速查找的非关键数据。Memory 之前被称为 HEAP 存储引擎。它的使用场景越来越少;InnoDB 中的 buffer pool 内存区提供了将大部分或全部数据保留在内存中的一个通用持久性方法,NDBCLUSTER 为海量分布式数据集提供了快速的键-值查找。
  • CSV:这种类型的表实际上就是逗号分隔符文本文件。CSV 表可以导入或导出 CSV 格式的数据,用于脚本和应用程序之间的数据交换。由于 CSV 表不支持索引,通常可以在日常操作中将数据存储在 InnoDB 表中,只在导入或导出阶段使用 CSV 表。
  • Archive:这种压缩格式的无索引表主要用于存储和检索大量的很少使用的历史、归档或者安全审计数据。
  • Blackhole:Blackhole 存储引擎不会实际存储数据,类似于 Unix 中的 /dev/null 设备。查询永远不会返回数据。这种表可以用于特定的复制环境,DML 语句需要发送到从服务器,但是主服务器自身不保存数据。
  • NDB (也就是 NDBCLUSTER):这种集群数据库引擎主要用于对服务可用性要求极高的场景。
  • Merge:支持 MySQL DBA 或者开发人员将许多结构一致的 MyISAM 表作为一个逻辑对象使用。可以用于 VLDB 环境,例如数据仓库。
  • Federated:提供访问远程数据库的功能,可以将多个 MySQL 物理服务器组合成一个逻辑数据库。非常适合分布式环境或者数据集市。
  • Example:这是 MySQL 源代码中的一个示例存储引擎,用于演示如何编写新的存储引擎。它主要面向开发者,这种类型的表无法存储数据,也不会返回任何结果。

存储引擎的设置不在服务器级别,也不在数据库(模式)级别;用户可以为不同的表指定不同的存储引擎。例如,一个应用程序大多数的表使用 InnoDB 存储引擎;同时创建一个 CSV 表,用于将数据导出到电子表格文件中;另外创建一些 MEMORY 表作为临时存储区。

下表描述了 MySQL 中常见存储引擎支持的功能特性。

功能特性MyISAMMemoryInnoDBArchiveNDB
B-树索引✔️✔️✔️
备份/时间点恢复(1)✔️✔️✔️✔️✔️
集群数据库✔️
聚集索引✔️
压缩数据✔️ (2)✔️✔️
数据缓存N/A✔️✔️
加密数据✔️ (3)✔️ (3)✔️ (4)✔️ (3)✔️ (3)
外键✔️✔️ (5)
全文搜索索✔️✔️ (6)
空间数据类型✔️✔️✔️✔️
空间数据索引✔️✔️ (7)
哈希索引✔️❌ (8)✔️
索引缓存✔️N/A✔️✔️
锁的粒度表级表级行级行级行级
MVCC✔️
复制 (1)✔️有限(9)✔️✔️✔️
存储限制256TBRAM64TB384EB
T-树索引✔️
数据库事务✔️✔️
更新数据字典统计信✔️✔️✔️✔️✔️

注释:

  1. 在服务器层实现,而不是存储引擎层。
  2. 只有使用行压缩格式才支持 MyISAM 压缩表。使用行压缩格式的 MyISAM 表属于只读表。
  3. 在服务器层通过加密函数实现。
  4. 在服务器层通过加密函数实现;MySQL 5.7 开始支持表空间静态数据(data-at-rest)加密。
  5. MySQL Cluster NDB 7.3 开始支持外键约束。
  6. MySQL 5.6 开始支持 InnoDB 的 FULLTEXT 索引。
  7. MySQL 5.7 开始支持 InnoDB 的空间数据索引。
  8. InnoDB 内部使用哈希索引实现自适应哈希索引(Adaptive Hash Index)特性。
  9. 内存表的复制。

下一篇我们来具体谈谈 InnoDB 存储引擎的体系结构。欢迎关注❤️、点赞👍、转发📣!

数据库性能优化详解
逍遥飞鹤的专栏
07-23 1万+
一、数据库访问优化法则简介 要正确的优化SQL,我们需要快速定位能性的瓶颈点,也就是说快速找到我们SQL主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬盘可能会是瓶颈点,为什么这些一般的工作我们能快速确认瓶颈点呢,因为我们对这些慢速设备的性能数据有一些基本的认识,如网络带宽是2Mbps,硬盘是每分钟7200转等等。因此,为了快速找到SQ
mysql优化十:从架构角度全局理解mysql性能优化
admin522043032的博客
01-05 1908
从架构角度全局理解mysql性能优化 MySQL性能优化其实是个很大的课题,在优化上存在着一个调优金字塔的说法: 很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的。比如硬件和 OS调优,需要对硬件和OS有着非常深刻的了解,例如磁盘阵列 (RAID)级别、是否可以分散磁盘IO、是否使用裸设备存放数据,使用哪种文件系统,还有操作系统的调度算法等等。 所以在进行优化时,首先需要关注和优化的应该是架构,如果架构不合理,即使是DBA 能做的事情其实是也是比较有限的。 对于架构调优,在系统设计时首先需
数据库——数据库性能优化
最新发布
longer_net的博客
07-06 982
系统的吞吐量瓶颈往往出现在数据库的 访问速度 上,随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢,因为其数据是存放在 磁盘 上的,读写速度无法和内存相比,所以使用数据库时,十分有必要了解数据库优化问题。这种策略的主要目的是减轻单一数据库或表的压力,提高查询和写入速度,同时支持系统的水平扩展,即通过增加更多的数据库或表来应对数据量的增长。MySQL 读写分离的实现方式主要基于 主从复制,通过 路由的方式 使应用对数据库的写请求只在 Master 上进行,读请求在 Slave 上进行。
MySQL性能优化:优化思路、查询优化、索引优化、存储优化、数据库结构优化、数据库结构优化
热门推荐
weixin_41942838的博客
12-16 1万+
MySQL性能优化 1 优化介绍 ​在进行优化讲解之前,先请大家记住不要听信你看到的关于优化的“绝对真理”,而应该是在实际的业务场景下通过测试来验证你关于执行计划以及响应时间的假设。给大家提供一些优化方面的方向和思路,而具体业务场景的不同,使用的MySQL服务版本不同,都会使得优化方案的制定也不同。 1.1 MySQL介绍 ​MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。可以看到Google,Facebook,Twitter,百度,新浪,腾讯,淘宝,网易,
MySQL性能优化总结
tianmo2010的专栏
06-25 6081
一、MySQL的主要适用场景 1、Web网站系统 2、日志记录系统 3、数据仓库系统 4、嵌入式系统 二、MySQL架构图:   三、MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI文件,分别存放了表
Mysql 性能优化
踏花忆锦年的博客
02-01 397
Mysql 性能优化 1、当只要一行数据时使用 limit 1 查询时如果已知会得到一条数据,这种情况下加上 limit 1 会增加性能。因为 mysql 数据库引擎会在找到一条结果停止搜索,而不是继续查询下一条是否符合标准直到所有记录查询完毕。  2、选择正确的数据库引擎 Mysql 中有两个引擎 MyISAM 和
千金良方:MySQL性能优化金字塔法则.docx
09-13
金字塔法则认为,MySQL性能优化的关键在于建立一个多层次的优化体系,从硬件层、操作系统层、数据库层、应用程序层到架构层进行全面优化。这一法则的提出,为MySQL性能优化提供了一个系统化的方法论,为开发人员和...
MySQL性能优化详解.docx
03-26
在Web应用程序体系结构中,数据持久层(通常是关系数据库)是系统的核心部分之一,对整体系统的性能有着至关重要的影响。MySQL作为目前使用最广泛的开源数据库之一,其默认设置往往无法满足生产环境中的高性能需求。...
mysql性能优化教程.pdf (by caoz)
03-04
- **索引类型**:B树是最常见的索引结构之一;Hash索引适用于key-value查询,但不支持范围查询和排序。 ##### 2.2 如何理解数据索引的结构 - **B树索引**:大多数数据库使用B树或其变体作为索引结构。这种结构的...
MySQL调优与最佳实践
weixin_44117767的博客
11-17 761
详解 MySQL 下面来学习互联网行业使用最为广泛的关系型数据库 MySQL,它的知识点结构图如下所示。 常用 SQL 语句 对于手写常用 SQL 语句,没有什么特殊的技巧,根据所列的语句类型多做一些练习就好。 数据类型 要知道 MySQL 都提供哪些基本的数据类型,不同数据类型占用的空间大小。可以按给出的分类进行记忆,不一一罗列。 引擎 介绍 MySQL 中主要的存储引擎。 MyISAM 是 ...
Mysql性能优化
weixin_42672802的博客
01-13 694
Mysql优化主要分为以下四大方面: 设计:存储引擎,字段类型,范式与逆范式 功能:索引,缓存,分区分表,数据库连接池 架构:主从复制(主库写,从库读),读写分离,集群,负载均衡 合理SQL:测试,优化查询语句,经验,Explain 查看执行计划,慢日志 数据库连接池: C3p0 Hikai Druid 缓存:Redis MongDb MemCache HBase 分库分表:数据量非常大,垂直:按业务,水平:按数据 一、存储引擎 存储引擎是一种用来存储MySQL中...
MySQL性能优化
2201_75382167的博客
03-14 528
MySQL是一个磁盘IO访问非常频繁的关系型数据库,在高并发和高性能的场景中MySQL数据库必然会承受巨大的并发压力,在此时我们的优化方式,主要可以分为搭建MySQL主从集群---单个MySQL服务容易去导致单点故障,一旦服务宕机将会导致依赖MySQL数据库的应用全部无法响应,而主从集群或者主主集群都可以去保证服务的高可用性。它们可以很好的缓解MySQL的访问压力,同时还能提升数据的检索性能。针对这两个点我们应该注意全局参数的设定,对于已经存在的会话是无法生效的,会话参数的设定随着会话的销毁而失效;
写文章

热门文章

  • DBeaver - 一款免费开源的通用数据库工具 194166
  • 《MySQL 性能优化》之理解 MySQL 体系结构 81620
  • Pandoc:一个超级强大的文档格式转换工具 74807
  • 绝对中位差Median Absolute Deviation 56676
  • MySQL 查看版本的 5 种方法 51195

分类专栏

  • SQL 从入门到精通 付费 39篇
  • MySQL入门教程 付费 39篇
  • PostgreSQL开发指南 付费 33篇
  • 《SQL入门教程》 付费 17篇
  • 数据库 128篇
  • 编程技能 2篇
  • 开发人员数据库性能指南 3篇
  • Oracle入门教程 9篇
  • Microsoft SQL Server 13篇
  • Oracle 53篇
  • MySQL性能优化 9篇
  • MySQL 58篇
  • PostgreSQL 90篇
  • SQLite 21篇
  • Python 116篇
  • 数据仓库 1篇
  • MongoDB 32篇
  • 机器学习&数据挖掘 13篇
  • 云计算与物联网 3篇
  • 操作系统与软件工具 7篇
  • 生生活活 2篇

最新评论

  • SQL:始于关系,超越关系

    不剪发的Tony老师: Thanks!

  • SQL:始于关系,超越关系

    征途黯然.: 表情包This SQL始于关系超越关系 article is truly great and very insightful.

  • Orange:一个基于 Python 的数据挖掘和机器学习平台

    Tony Einstein: orange社区有

  • MySQL 8.0 新特性之不可见主键

    脱缰野码: 关闭不可见主键之后,MySQL按什么数据结构存储数据,直接顺序存吗?还有,以后创建的任何索引都是直接存地址吗?因为没有主键可以存了。

  • PostgreSQL关闭数据库服务的三种模式

    泡芙萝莉酱: 博主的这篇文章让我对“PostgreSQL关闭数据库服务的三种模式”这个主题有了全新的认识,细节描写非常到位,让我感受到了博主的深厚功底。阅读完后,我对这个主题的理解得到了更深入的提升,收获颇丰。期待博主未来能够持续分享更多类似的好文,同时也希望能够得到博主的指导,共同进步。非常感谢博主的分享和支持!

大家在看

  • Battle for Survive 876
  • 小爱·扫雷游戏 84
  • 金蝶国际云转型梦碎:连年亏损何时休?
  • linux之进程信号 199
  • 关于嵌入式硬件需要了解的基础知识 622

最新文章

  • SQL案例分析:美联储降息前后的复利差距
  • 后端开发学习路线图
  • SQL案例分析:计算延迟法定退休年龄
2024
09月 10篇
08月 5篇
07月 4篇
06月 5篇
05月 8篇
04月 6篇
03月 7篇
02月 3篇
01月 9篇
2023年56篇
2022年135篇
2021年75篇
2020年201篇
2019年64篇
2018年37篇
2017年4篇
2015年16篇
2014年11篇
2013年2篇
2011年3篇

目录

目录

评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不剪发的Tony老师

为 5 个 C 币而折腰。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码汕尾网站优化泉州网站首页优化公司兖州网站优化公司辽中区网站建设优化价格网站代码优化公司成都邛崃网站排名优化邯郸网站排名优化公司凌海优化网站关键词甘肃网站优化推广公司费用临武县网站优化廉江网站关键词优化莱山行业网站优化河源网站优化托管业务唐山网站关键词优化软件百度优化网站推广平台网站早期优化推推蛙怎么优化企业网站产品做优化好还是超级网站好从化网站排名推广优化费用网站关键词优化出色火4星增城网站关键词优化网站优化的位置雷山网站seo优化公司昌乐网站优化价钱长安企业网站推广优化价钱福建网站快速优化烟台网站优化鞍山网站优化快照重庆网站推广优化公司山西网站优化厂家报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化