mysql8数据库特性(mysql8 新特性)

本文目录一览:

mysql 独有的特性?

MySQL的一些特点

1. 使用核心线程的完全多线程。这意味着它能很容易地利用多CPU(如果有)。

2. 支持C 、C++、 Eiffel 、 Java、 Perl、 PHP、Python、和 TCL API等客户工具和 API。

3. 可运行在不同操作系统平台上。

4. 支持多种列类型:1、 2、 3、4、和 8 字节长度的有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM类型。

5. 利用一个优化的一遍扫描多重联结(one-sweep multi-join)非常快速地进行联结(join)。

6. 在查询的SELECT和WHERE部分支持全部运算符和函数,例如:

mysql SELECT CONCAT(first_name, ” “, last_name) FROM tbl_name

WHERE income/dependents 10000 AND age 30;

7. 通过一个高度优化的类库实现SQL函数库并且像他们能达到的一样快速,通常在查询初始化后不应该有任何内存分配。

8. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数( COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、 MAX()和MIN() )。

9. 支持ANSI SQL的LEFT OUTER JOIN和ODBC语法,你可以在同一查询中混用来自不同数据库的表。

10. 一个非常灵活且安全的权限和口令系统,并且它允许基于主机的认证。口令是安全的,因为当与一个服务器连接时,所有的口令传送被加密。

11. ODBC for Windiws 95。所有的 ODBC 2 . 5 函数和其他许多函数。例如,你可以用Access连接你的 MySQL服务器,具备索引压缩的快速B树磁盘表。

12. 每个表允许有16个索引。每个索引可以由1~16个列或列的一部分组成。最大索引长度是 256 个字节(在编译MySQL时,它可以改变)。一个索引可以使用一个CHAR或VARCHAR字段的前缀。

13. 定长和变长记录。用作临时表的内存散列表。

14. 大数据库处理。我们正在对某些包含 50,000,000 个记录的数据库使用MySQL。

15. 所有列都有缺省值,你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的缺省值。为了可移植性使用 GNU Automake , Autoconf 和libtool。

16. 用C和C++编写,并用大量不同的编译器测试,一个非常快速的基于线程的内存分配系统。

17. 全面支持ISO-8859-1 Latin1 字符集。例如,斯堪的纳维亚的字符 @ringaccent{a}, @”a and @”o 在表和列名字被允许。

18. 表和列的别名符合 SQL92 标准。

19. 函数名不会与表或列名冲突。例如ABS是一个有效的列名字。

20. 客户端使用TCP/IP 连接或Unix套接字(socket)或NT下的命名管道连接MySQL。

21. MySQL特有的SHOW命令可用来检索数据库、表和索引的信息,EXPLAIN命令可用来确定优化器如何解决一个查询。

以上来自网络,我自己感觉的话有:

1、轻量级、体积小

2、可嵌入

3、支持多重存储引擎

4、开源

5、适用海量查询、PHP等网站开发支持最好了,建站首选。

MYSQL相比于其他数据库有哪些特点

1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性 ;

2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统 ;

3.为多种编程语言提供了API。这些编程语言包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。 ;

4.支持多线程,充分利用CPU资源 ;

5.优化的SQL查询算法,有效地提高查询速度 ;

6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名;

7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径 ;

8.提供用于管理、检查、优化数据库操作的管理工具 ;

9.可以处理拥有上千万条记录的大型数据库。

mysql8好用吗?现在用的多吗?

mysql8 可以说是一个质的飞越。增加了很多新特性,以及提高了各方面的速度。增加了开窗函数

Ⅱ InnoDB增强

自增列方面

自增列方面。现在自增列计数器会在每次值修改时,将值写到REDO LOG中,并且在CHECKPOINT时写到存储引擎私有的系统表中。

这就消除了以往重启实例自增列不连续的问题(这也可能形成了一个新的竞争点(盖国强会上提问InnoDB开发者))。

Btree索引方面

Btree索引被损坏。InnoDB会向REDO LOG中写入一个损坏标志。同时也会CHECKPOINT时将内存中损坏页的数据记录到存储引擎私有的系统表中。

这也就促成了恢复时。两边一致的情形。索引不可用,并不会造成实例起不来。这很大程度上降低了之前使用innodb_force_recovery和innodb_fast_shutdown的必要。

提升了一致性。(对于一般DBA来说透明,知道有这么回事就好)

NoSQl操作

InnoDB memcached插件支持多个get操作(在单个memcached查询中获取多个键/值对)

和范围查询。(个人认为这个挺牛逼,有点像NoSQL,不仅仅是NoSQL)。

需要安装daemon_memcached插件,其中多了一个innodb_memcache schema,这个schema中有几张表,其中一张containers用来与InnoDB表之间做映射,,

然后通过接口访问Innodb表。然后会有一个11211的端口打开,用于建立连接。

好处是通过减少客户端和服务器之间的通信流量,在单个memcached查询中获取多个键/值对的功能可以提高读取性能。

对于InnoDB来说,也意味着更少的事务和开放式表操作。

死锁检测

新的动态配置选项innodb_deadlock_detect可用于禁用死锁检测,默认打开。 在高并发系统上,当大量线程等待相同的锁时,死锁检测会导致速度下降。 有时,在死锁发生时,

禁用死锁检测并依赖innodb_lock_wait_timeout设置进行事务回滚可能更有效。记得之前版本遇到死锁会自动回滚。以下截图来自MySQL5.7,与8.0默认相同。

(也就是说即便MySQL5.7也是有死锁检测的,并且自动回滚权重较小的事务(套死除外))。

尝试更改innodb_deadlock_detect参数为OFF。则遇到死锁时两个工作线程都会被堵塞。直到innodb_lock_wait_timeout设定的锁超时。

新的INFORMATION_SCHEMA.INNODB_CACHED_INDEXES表保存了Innodb索引缓存在Innodb buffer pool中的页数。

现在,所有InnoDB临时表都将在共享临时表空间ibtmp1中创建。

加密特性

支持REDO和UNDO表空间加密。

共享锁方面

InnoDB在 SELECT … FOR SHARE 和 SELECT … FOR UPDATE锁定读语句上 支持不等待( NOWAIT)和跳过锁(SKIP LOCKED)的选项。也就是说以往加了共享锁之后必须手动释放。

这里如果没有锁就返回结果,如果有就报下面错误。

如果是用有锁就跳过,则无数据。

根据场景使用。反正都是秒回。降低了排查数据库超时的可能。

原创文章,作者:O3BC0,如若转载,请注明出处:https://www.506064.com/n/128354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
O3BC0O3BC0
上一篇 2024-10-03 23:24
下一篇 2024-10-03 23:24

相关推荐

  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • Python计算机语言的特性与应用

    Python,是一种高层次、解释型的、面向对象的计算机编程语言。 一、简介 Python编程语言的初衷是:代码简洁易读、可拓展性强、适用范围广。其应用领域包括Web开发、数据科学、…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28
  • Think-ORM数据模型及数据库核心操作

    本文主要介绍Think-ORM数据模型建立和数据库核心操作。 一、模型定义 Think-ORM是一个开源的ORM框架,用于简化在PHP应用中(特别是ThinkPHP)与关系数据库之…

    编程 2025-04-27
  • 如何使用Python将CSV文件导入到数据库

    CSV(Comma Separated Values)是一种可读性高、易于编辑与导入导出的文件格式,常用于存储表格数据。在数据处理过程中,我们有时需要将CSV文件导入到数据库中进行…

    编程 2025-04-27
  • Python批量导入数据库

    本文将介绍Python中如何批量导入数据库。首先,对于数据分析和挖掘领域,数据库中批量导入数据是一个必不可少的过程。这种高效的导入方式可以极大地提高数据挖掘、机器学习等任务的效率。…

    编程 2025-04-27
  • Activiti 6自动部署后不生成数据库act_hi_*的解决方法

    本文将从多个方面详细阐述Activiti 6自动部署后不生成数据库act_hi_*的问题,并提供对应的代码示例。 一、问题分析 在使用Activiti 6部署流程后,我们发现act…

    编程 2025-04-27

发表回复

登录后才能评论