了解一下Lua,没准用得上

记得在知乎里面有一个网友提问:写工业级别代码是怎样一种体验?褚霸回复到:看lua源码就知道啥叫工业级

什么是Lua,我们有必要花一点时间来了解一下。

做数据库性能测试的时候,很常用的一个工具就是sysbench,而且有一点很特别,默认就是使用了Lua模板,有同学说Lua模板是什么,如果告诉你是一门新的脚本语言,很多同学就头大了,当然sysbench也不是甩手掌柜,已经给你配备了一系列的Lua模板,基本能够满足大多数场景的测试,比如OLTP读写,只读,插入,批量插入等模板。‘

abbc39022ff748559738f5206e591823.png

当然也不是一劳永逸,如果我们深入做一些测试就会发现还是有一定的局限性,比如表名是sbtest[n]的方式,表结构清一色就是不到5个字段,而且表结构信息和数据也没法直接改动,如此一来和真实的场景还是差别很大,测试结果仅做参考,如果要改进,那就是基于模板深度定制一个更好一些。这也是我写这篇文章的一个出发点之一。

我们来简单了解下Lua,看下它的优点和缺点。这门语言诞生于巴西里约热内卢天主教大学,脚本解析器不到200K,非常适合阅读源码学习,而且在目前所有脚本引擎中,Lua的速度是最快的。在游戏行业里用得很多,比如在魔兽世界中,这一切都决定了Lua是作为嵌入式脚本的最佳选择。用一句很技术的评论说,就是

Lua源码满足了我们对c语言编程的所有幻想,可能是目前最好的c开源库之一。

当然光说好的也不好,我们得看看它不能做什么,或者做得不好的地方。简单总结下来就是

标准库功能太少、没有多核支持、没有unicode支持、c api太难用,而且比较纠结的是Lua 版本升级向来是不兼容的,这一点和Python兄弟很像,很任性。如果从5.1是要想升级到 5.2 要做很多额外的工作(最新版本是5.3.4)。

此外LuaJIT我们也可能会常见,可以理解是Lua的一个高效版,通过ffi把Lua的生态做得更加强大了。至少在sysbench启动的时候会明显看到如下的信息:

sysbench 1.1.0 (using bundled LuaJIT2.1.0-beta3)

操作系统层面如果调用lua命令,会发现是系统自带的。两者的版本明显不同。

# lua

Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio,

到了这里,我们可以设定一个小目标,我们自己来定制Lua模板,来满足我们制定业务需求的测试场景,如果需要调整事务的大小和DML的比例,也可以通过配置灵活实现,想想多美好。

所以我们要做的一件事情就是在IDE中配置,我们选择IntelliJ,安装一个Lua插件。在如下的链接即可下载使用:

https://plugins.jetbrains.com/plugin/9768-emmylua

我们选择一个相对较新的版本

14cf3ac3c8344a10b07906582e9aa707.jpeg

然后在IntelliJ里面配置插件,选中jar包即可。

24da77f0fac14df3829efa5f1d222d74.jpeg

插件EmmyLua就这样完成了安装,我们可以通过这种方式先看看sysbench里面的Lua模板,看看下一步该怎么做。

000729b06ca248b588004531ed833588.jpeg

如果重建一个工程,我们会明显看到这个Lua的选项。

55590463bb9649c6819b6603e056f12b.jpeg

我没有学过Lua,但是我看Lua脚本的时候,发现和MHA里面的Perl语法很相似,有很多我觉得就是c的风格。总体易读性更强,因为模板的代码很简练,我们能很快找到重点。自己要定制的话相比MHA定制要容易一些(目前拍脑袋认为)。

比如insert的模板就是这些内容,除了oltp_common的内容,实际需要控制的逻辑还是很简洁的。

a760b76a1b274548aab5ea55dc0cf19b.jpeg

读写的模板略微复杂些,先花些时间在应用层面,然后逐步深入学习一下。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-2148318/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-2148318/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值