MariaDB作为MySQL的开源分支,我觉得它最大的价值就是给咱们开发者吃了一颗定心丸。毕竟甲骨文收购MySQL后,大家总担心闭源风险,而MariaDB完美继承了MySQL的衣钵,API和命令行都兼容,换起来几乎没成本,这对咱们这些依赖开源生态的人来说太重要了。
从功能上看,MariaDB确实比原版MySQL更给力。它用XtraDB替换了老旧的MyISAM,还加了线程池、组提交这些提升性能的黑科技,运行速度更快,bug也更少。我特别喜欢它的微秒扩展和动态列功能,处理高并发场景时明显更顺手。而且它支持Unicode排序和GIS扩展,做国际化应用或地理信息项目时特别省心。
配置方面,虽然教程里提到要选my-large这些文件,但我觉得新手得注意根据电脑配置来,别盲目选大的。保存my.ini到C盘system目录这步容易出错,我建议大家多检查路径,尤其是basedir和datadir,写错了服务启动不了。另外,添加default-character-set=utf8和WinMySQLAdmin这些细节,看似繁琐,但对中文环境支持很关键。
使用上,MariaDB的命令和MySQL几乎一样,创建、删除数据库都很直观。不过我得提醒,用mysqladmin操作时,那个确认删除的提示框千万别手滑点错,数据丢了可没法恢复。修改全局变量时,set global sql_mode=strict_trans_tables这个建议很实用,能在开发阶段就揪出数据问题,避免上线后踩坑。
总的来说,MariaDB不光是MySQL的替代品,更是升级版。它保留了MySQL的易用性,又在性能和功能上做了优化,特别适合咱们这种既要稳定又要效率的开发者。如果你还在用MySQL,不妨试试MariaDB,迁移成本低,收益却很明显。
mariadb是MySQL的一个数据库管理系统分支,主要由开源社区在维护,采用GPL授权许可。mariadb的存在的目的就是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。同时MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。现实中甲骨文公司在收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。 过去一年中,大型互联网用户以及Linux发行商纷纷抛弃MySQL,转投MariaDB阵营。MariaDB是目前最受关注的MySQL数据库衍生版,也被视为开源数据库MySQL的替代品。mariadb有着许多Mysql所没有的功能,包括线程池、组提交、非阻塞客户端库、微秒扩展和类型支持和全文搜索引擎等全新功能。
mariadb配置教程
1、打开解压目录,然后找到my-large,my-medium,my-small这三个文件,根据你的电脑的配置进行选择,这里选择的是my-large文件
2、右击编辑
[client]
#password =
port = 3306
socket = /tmp/mysql.sock
default-character-set=utf8(这个需要自己添加)
3、添加目录(这里的目录是你的解压目录):
[mysqld]
port = 3306
socket = /tmp/mysql.sock
basedir=E:/Softwear/mariadb-10.0.10-winx64 (这个需要自己添加)
datadir=E:/Softwear/mariadb-10.0.10-winx64/data (这个需要自己添加)
default-character-set=utf8 (这个需要自己添加)
default-storage-engine = MyISAM
4、在文件的最后在添加上:
[mysqlhotcopy]
interactive-timeout
[WinMySQLAdmin] (这个需要自己添加)
Server=E:\Softwear\mariadb-10.0.10-winx64\bin\mysqld.exe (这个需要自己添加)
5、单击文件——另存为——文件名为my.ini。将文件复制到C盘的system目录下即可
mariadb mysql区别
据了解到,mariadb 10.0大致相当于MySQL 5.6版本,是一个采用Aria存储引擎的MySQL分支版本,与MySQL相比较,mariadb更强的地方在于:
1、Maria 存储引擎
2、PBXT 存储引擎
3、XtraDB 存储引擎
4、FederatedX 存储引擎
5、更快的复制查询处理
6、线程池
7、更少的警告和bug
8、运行速度更快
9、更多的 Extensions (More index parts, new startup options etc)
10、更好的功能测试
11、数据表消除
12、慢查询日志的扩展统计
13、支持对Unicode的排序
mariadb新功能
MariaDB5.5有,而MySQL5.6没有的功能包括:
1、thread pool 线程池
2、group commit 组提交
3、non blocking client library 非阻塞客户端库
4、Microsecond 微秒扩展和类型支持
5、sphinxse sphinxse全文搜索引擎
6、subquery optimization 子查询优化
7、GIS functionality 地理信息系统相关扩展
8、Segmented MyISAM keycache MyISAM索引缓存分离
9、Authentication Plugins授权插件
10、limit row examined limit行限制
11、Progress reporting 进程进度报告
12、handlesocket 存储引擎旁路查询
13、dynamic column 动态列
软件特点
1、数据和表定义文件(.frm)是二进制兼容的
2、所有客户端API、协议和结构都是完全一致的
3、所有文件名、二进制、路径、端口等都是一致的
4、所有的MySQL连接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不变
5、mysql-client包在MariaDB服务器中也能够正常运行
6、共享的客户端库与MySQL也是二进制兼容的
mariadb使用方法
一、MariaDB创建数据库
1.使用mysqladmin创建数据库
[root@test01 10.19.166.166 ~ ]
# mysqladmin -u root -p create testdb1
Enter password: // 此处填写MariaDB数据库的密码
[root@test01 10.19.166.166 ~ ]
# mysql
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| hellodb |
| information_schema |
| mydb|
| mysql |
| performance_schema |
| test|
| testdb |
| testdb1 |<---创建的好的库
+--------------------+
2.登录MariaDB库创建
MariaDB [(none)]> create database testdb2;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| hellodb |
| information_schema |
| mydb|
| mysql |
| performance_schema |
| test|
| testdb |
| testdb1 |
| testdb2 |<---创建好的库
+--------------------+
二、MariaDB删除数据库
1.使用mysqladmin删除数据库
[root@test01 10.19.166.166 ~ ]
# mysqladmin -u root -p drop testdb1
Enter password: //输入数据库密码
//执行完上面的删除命令后,会出现一个提示框,提示是否确认删除此数据库
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the ‘testdb1‘ database [y/N] y //删除
Database "testdb1" dropped
2.登录MariaDB库删除
MariaDB [(none)]> drop database testdb2;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show databases; //确认testdb2已被删除
+--------------------+
| Database |
+--------------------+
| hellodb |
| information_schema |
| mydb|
| mysql |
| performance_schema |
| test|
| testdb |
+--------------------+
三、MariaDB选择数据库,查看选择库下面的所有表
MariaDB [(none)]> show databases; //查看所有库
+--------------------+
| Database |
+--------------------+
| hellodb |
| information_schema |
| mydb|
| mysql |
| performance_schema |
| test|
| testdb |
+--------------------+
7 rows in set (0.00 sec)
MariaDB [(none)]> use mydb //选择mydb数据库
Database changed
MariaDB [mydb]> show tables; //查看mydb数据库下面所有表信息
+----------------+
| Tables_in_mydb |
+----------------+
| ssc |
| t1 |
| tb2 |
| tb4 |
| tb5 |
+----------------+
5 rows in set (0.00 sec)
MariaDB命令
一、mariadb> SHOW GLOBAL VARIABLES; 全局变量影响服务器的全局操作
二、mariadb> SHOW [SESSION] VARIABLES; 客户端变量,只对当前会话生效
注意:其中有些参数支持运行时修改,会立即生效;有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效有些参数作用域是全局的,且不可改变;有些可以为每个用户提供单独的设置
三、修改服务器变量的值
1.全局:mariadb> SET GLOBAL system_varname=value
mariadb> SET @@global.system_varname=value
2.会话:mariadb> SET [SESSION] system_varname=value
例如:set global sql_mode=strict_trans_tables
3.常用MODE:TRADITIONAL, STRICT_TRANS_TABLES
sql_mode默认为空,建议开发人员将这个值设为严格模式,这样有些问题可以在数据库的设计和开发阶段就能发现,而如果在生产环境下运行数据库后发现这类问题,那么修改的代价将变得十分巨大
四、状态变量:用于保存mariadb运行中的统计数据的变量
mariadb> SHOW GLOBAL STATUS
mariadb> SHOW [SESSION] STATUS
五、如何获取程序默认使用的配置:
mysql --print-defaults(客户端)
mysqld --print-defaults(服务端)
六、mariadb查询执行路径
1.客户端发送一条查询给服务器
2.服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段
3.服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划
4.MariaDB根据优化器生成的执行计划,调用存储引擎的API来执行查询
5.将结果返回给客户端
点击星星用来评分