前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >了解一下Lua,没准用得上

了解一下Lua,没准用得上

作者头像
jeanron100
发布2018-03-22 13:23:33
9830
发布2018-03-22 13:23:33
举报
文章被收录于专栏:杨建荣的学习笔记

记得在知乎里面有一个网友提问:写工业级别代码是怎样一种体验?褚霸回复到:看lua源码就知道啥叫工业级 什么是Lua,我们有必要花一点时间来了解一下。

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

当然也不是一劳永逸,如果我们深入做一些测试就会发现还是有一定的局限性,比如表名是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 LuaJIT 2.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 我们选择一个相对较新的版本

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

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

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档