首页 > 数据库 > 文库 > 正文

MariaDB 10.0 亮眼特性解说

2024-09-07 22:12:42
字体:
来源:转载
供稿:网友
        很多同学一定听说过MariaDB。作为MySQL的重要分支之一,它继续秉承完全开源的姿态(MySQL也有不少好用功能是收费的哟),被很多大型互联网企业广泛使用(如Google、Twitter)。同时,红帽7(包括CentOS)也将默认数据库由MySQL更改为MariaDB。在这种情况下,一定要了解一下这个逆生长的MariaDB。
 
       本文,着重介绍MariaDB 10.0 GA版中的非常吸引人的若干特性,方便大家和MySQL进行比较。
 
1. Feedback插件--不推荐:
 
      a) 开启方式:my.cnf配置文件的[mysqld]模块,加入feedback=on
 
      b) 作用:会发送使用数据给开发人员,帮助其优化代码。
 
2. InnoDB和XtraDB转换:
 
a) MDB默认使用XtraDB。
 
b) 开启方式:
 
1) 停止mysql服务。
 
2) 在my.cnf配置文件的[mysqld]模块,加入ignore_builtin_innodb、
 
plugin_load=innodb=ha_innodb.so
 
3. MYSQL客户端报告:
 
a) 控制参数:global.progress_report_time 值范围要大于5.单位秒。5以下的值被忽略。
 
b) 关闭的方法:
 
1) 启动服务时加入--disable-progress-reports
 
2) 设置global.progress_report_time 值等于0.
 
c) MariaDB附带的mytop脚本一样也支持此功能
 
4. SHOW EXPLAIN FOR query_id:Explain命令的变种。
 
可以在得知QID的情况下查询执行计划。
 
5. LIMIT ROWS EXAMINED:LIMIT命令的进化版本。
 
语法:LIMIT [m] ROWS EXAMINED n (m可选)
 
作用:普通的LIMIT语句在查询到指定数量的分页结果后还会继续执行。如果是大表的话这样的分页操作会消耗过多的资源。
 
举例:LIMIT 100 ROWS EXAMINED 10000 将从一个含有10000条记录的分页中再次筛选出前100条记录。
 
6. INSTALL SONAME:安装指定插件、引擎。INSTALL PLUGIN命令变种。
 
语法:INSTALL SONAME engine_name.
 
举例:安装BLACKHOLE引擎。
 
INSTALL SONAME ‘ha_blackhole’;
 
INSTALL PLUGIN Blackhole SONAME ‘ha_blackhole’;
 
卸载某插件使用UNINSTALL替换INSTALL
 
7. 生成HTML/XML文件:
 
举例:mysql --html/--xml isfdb < isfdb-001.sql > isfdb-001.html/ isfdb-001.xml
 
会将isfdb-001.sql中的查询语句返回的结果生成相应的html或者xml文件。
 
8. 控制MariaDB查询优化器策略:
 
a) 查看当前查询优化器中的优化策略状态:
 
SELECT @@optimizer_switch/G
 
开启或关闭某个优化策略:
 
如:SET [GLOBAL] optimizer_switch="mrr=on";
 
或者在my.cnf配置文件中的[mysqld]模块中添加:
 
[mysqld]
 
optimizer_switch = "mrr=on, mrr_cost_based=on,mrr_sort_keys=on"
 
b) 在INNODB和XTRADB上打开优化器extended keys策略:
 
1) 打开方法如上文所示,参数名为:extended_keys=on
 
2) 作用:由于优化器是基于成本的(CBO),因此执行计划中会出现有很多索引但是优化器无法使用的查询。打开优化器extended keys策略将会使优化器在出现这一情况时,尽量使用索引来返回,而不是扫描全表。
 
10. 配置Aria引擎两步死锁监测:
 
a) 原理:
 
当Aria引擎无法在表上创建锁时,它首先会依据deadlock_search_depth_short的值为可能出现的死锁创建一个深度搜索等待图(WFG)。当搜索结束后如果还无法创建锁,那么Aria引擎并不急着判断出死锁,而是会等待deadlock_timeout_short定义的微秒后,再搜索一遍。如果还是无法创建锁,那么Aria引擎会使用deadlock_search_depth_long参数的值,创建一个深度搜索等待图。当搜索结束后,如果还没有定义死锁,那么Aria引擎将等待deadlock_timeout_long定义的微秒后,返回超时错误。

(编辑:武林网)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表