FFLIB之FFLUA——C++嵌入Lua&扩展Lua利器

摘要:

在使用C++做服务器开发中,经常会使用到脚本技术,Lua是最优秀的嵌入式脚本之一。Lua的轻量、小巧、概念之简单,都使他变得越来越受欢迎。本人也使用过python做嵌入式脚本,二者各有特点,关于python之后会写相关的文章,python对于我而言更喜欢用来编写工具,我前边一些相关的算法也是用python来实现的。今天主要讲Lua相关的开发技术。Lua具有如下特点:

MySQL数据库的字符集和copy_and_convert 字符集不同导致CPU资源额外消耗

关于copy_and_convert
在对MySQL做业务压力测试的时候,我们在perf结果中发现 copy_and_convert 是一个耗费cpu的操作。这个函数的意思,就是在字符集之间做内容转换。
如果源和目标的字符集相同,就可以直接用memcpy,这显然比做字符集转换(按字节或字长拷贝更快,和节省cpu)

当整个系统是CPU瓶颈时,我们希望能够减少这种cpu消耗。

一次查询涉及的拷贝
如果我们执行一个简单的select语句,会涉及到两部分的内容:metadata和data。MySQL的返回包是能够“自解析”的,也就是说不仅有内容,还有描述信息。这些描述信息我们称为metadata。

在将这两部分信息返回给客户端的时候,就涉及到字符串拷贝,如果源字符集和目标字符集不同,就需要作转换。

MySQL数据库逻辑备份工具mysqldump的输出方式和进度报告功能增加与改进

mysqldump在导出数据的过程中是“沉默”的,为了显示导出进度,给它加一个小patch显示进度。感谢 @宁青_ 的需求。

一、mysqldump输出方式

这个patch比较简单,先说一下相关的一个背景:mysqldump的输出方式。
1、  默认方式 stdout
2、  指定文件
-r target_file 可以指定导出的内容写入文件target_file中
3、–tab=path
在path目录下,对每个表生成两个文件,如表a生成a.sql和a.txt,分别存储表的定义和表的内容。

注意在指定—tab参数时,使用的是select into outfile …因此对指定的用户权限要求更高。

二、进度报告patch

增加参数 –progress-report 后,执行效果如下: