品质管理 关于游戏数据库

陈子昂 · 2016年09月29日 · 最后由 Gavin 回复于 2016年09月30日 · 1934 次阅读

文章的确不是很系统的东西,由浅入深等 testerhome 线上公开课。

一、补充上次合服文档

1、合服定义 1 个主服,其他库向那个主库进行合并。

合服后服务器 id 保留的服务器成为主服务器…这个是在平台那边配置,需要注意这个不光代表选择服务器序号顺序,id 用于区分是否为同 1 组服务器。
每次合区后需要做服务器文件(server.list)新旧都备注一份
基础信息:名称,域名端口,库名


2、路由数据库需要包含以下:

中心服务器可以用写成 lua 文件(关联)备份一份
如果有 proxy 服务器也需要备份.conf


3、脚本目录进行修改,格式如下:

db_info=[["域名",端口,"账号","账号","密码","主库名"], 
["域名",“端口“,"账号","账号","密码","从库名1"], 
["域名",“端口“,"账号","账号","密码","从库名2"]]
output_file_name = "./sql/主库名_db.sql"


4、合服后,原来端口最好也要关闭,当然也链接不上了。
Ps:建表.sql 也需要保存


二、多表查询 -转自自己 csdn 博文


1、分别要查 1 个竞技场 db_arena 和用户表 db_role 这 2 个表关联性强的
找到唯一的字段 id,以 rank 进行排序

select role.id,role.name,arena.rank,role.name,role.energy from db_arena arena,db_role role where role.id = arena.id group by rank

输入结果包含 2 张表的内容。


2、查询 top 排序 n 代表数字,如果是 n1~n2 段内的,id 是主键

elect top n1 * from (select top n2 * from table order by id asc) table  order by id desc

3、第 0 到 15 开始列出,排列规则是 desc/asc

select * from table order by orderfield asc limit 0,15

4、其他说明

有很多种方式,查询效率方面呢 比如,很多图形化的数据库软件直接提供了.基本忽略不计,效率方面如果真要扣的话,从长度开始吧。


三、数据库其他应用


1、在实际测试过程中,如果客户端还没好,当数据库可以修改的,都可以先进行测试。


2、比如目前没有公会等级,如果公会字段有这个信息,就可以通过数据库修改(注意修改这些账号下线再改)


3、一些触发状态的,也可以通过修改数据库对应表的状态在修改时间字段,顺序不要错。


4、很多方法都可以实现,后台调调,开 1 次前端验收 1 个数据,在关闭。后台调调,在开 1 次前端验收 1 个数据,在关闭。不怎么需要一直开着客户端游戏前端跑跑跑,除非你是在测试战斗效果或者很多批量内容。当然也有数据库里不能修改,例如整条存的加密数据。


5、数据库的一些发放触发,注意时间修改方面不要往后跨直接略过。


6、关于 log 数据库部分
lastlogin_time 这类使用 timestamp
register_time 每天记录一份 start_time 和 add_time


就写到这里,数据库相关文档还会有的。
漏了 1 个东西,除了测试,我们还有

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞

每二个查询 少截了个字符😁

你这个文章组织的太差了。。。

#1 楼 @xushizhao 对啊 还写错 1 个地方😂
#2 楼 @Lihuazhang 😢

修改了端口缺少'' '',修改了 rank

补充一段,语言你懂的。

raw_input()


home_path   = "约定的path地址"
svn_path = "svn地址"

time_label  = time.strftime('%Y%m%d_%H_%M',time.localtime(time.time()))

print time_label

def read_count(_file_name):
    fd = open( _file_name, "r")
    return int(fd.readline())

def make_gamesvr():
    # configure part
    code_path = "%地址/"%home_path
    public_path = "%/"%home_path

    # final bin file
    bin     = "%sbin/gameserver"%code_path
    script  = "%sbin/game_script.tar.gz"%code_path

    # clear public path
    os.system( "rm -rf %s"%public_path )

    # clear env
    os.system( "rm -rf %s"% code_path )

    # svn update
    os.system( "svn co %s %s"%( svn_path, code_path ) )


    # force set svn key
    os.chdir( code_path )
    os.system( "chmod u+x ./svnun_key.sh" )
    os.system( "./svnun_key.sh" )
    os.system( 'svn ci -m "force check svn key."' )

    import re
    os.chdir( code_path )
    fd = os.popen( 'svn info' )
    line = fd.readline()
    r = re.compile( 'Last Changed Rev: (\d+)' )
    svn_ver = 0
    while line:
        result = r.findall( line )
        if len(result) > 0:
            print result[0]
            svn_ver = int( result[ 0 ] )
            pass
        line = fd.readline()
        pass
    pack_name   = "服务包.tar.gz"%( svn_ver, time_label )
    print '''更新完毕,服务器版本号:%s,继续打包(回车),放弃(ctrl+C)'''%svn_ver
    raw_input()

#5 楼 @jiazurongyu 真想找个地洞钻进去😫

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册