Mysql 将大型数据库表折叠为每个用户一行
我正在运行一个赌场而不是真正的金钱网站,每次用户玩一行都会在我的数据库上的一个表上生成,这使得这个数据库增长太快,这会使我的服务器崩溃 这是表结构Mysql 将大型数据库表折叠为每个用户一行,mysql,sql,database,Mysql,Sql,Database,我正在运行一个赌场而不是真正的金钱网站,每次用户玩一行都会在我的数据库上的一个表上生成,这使得这个数据库增长太快,这会使我的服务器崩溃 这是表结构 Name Type Collation Attributes Null Default Extra Action 1 user_id int(11) No None Change C
Name Type Collation Attributes Null Default Extra Action
1 user_id int(11) No None Change Change Drop Drop Browse distinct values Browse distinct values Primary Primary Unique Unique Show more actions More
2 amount decimal(16,8) No None Change Change Drop Drop Browse distinct values Browse distinct values Primary Primary Unique Unique Show more actions More
3 aff int(11) No 0 Change Change Drop Drop Browse distinct values Browse distinct values Primary Primary Unique Unique Show more actions More
4 jackpot int(11) No 0 Change Change Drop Drop Browse distinct values Browse distinct values Primary Primary Unique Unique Show more actions More
5 paidout int(11) No 0 Change Change Drop Drop Browse distinct values Browse distinct values Primary Primary Unique Unique Show more actions More
6 type int(11) No 0 Change Change Drop Drop Browse distinct values Browse distinct values Primary Primary Unique Unique Show more actions More
7 created timestamp No CURRENT_TIMESTAMP Change Change Drop Drop Browse distinct values Browse distinct values Primary Primary Unique Unique Show more actions More
这个表实际上有大约400万行,只有30000个用户id
我的问题是,有没有一种方法可以将表折叠起来,比如说每天,每个用户只保存一行,并保持他们的余额
我正在尝试这一点,但没有成功:
更新trans
按用户id从trans group中选择*
设置金额=从trans选择sumamount以下是一些主要步骤: 创建一个新的汇总表。 在原始表上添加触发器以查找此用户,并将金额添加到汇总表中的总计中 清除某个时间表上的所有旧条目 或 更改应用程序逻辑以执行更新而不是插入 或
您可以编写一个“按样式分组”查询,将所有用户信息相加并返回,而不是返回所有详细信息-可能您正在做的是选择*,这将耗尽您的所有内存。。糟糕的问题是为什么会是现在这样?你能显示show CREATE TABLE输出吗?如果这是我们谈论的真实货币,我真的认为你不会想删除任何关于交易的信息。这不是真实货币,show CREATE TABLE输出是什么?sql语句的输出show CREATE TABLE yourTableName在你选择的mysql客户机中,即mysql命令行客户端。Table Create Table trans Create Table trans user_id int11不为空,amount decimal16,8不为空,aff int11不为空默认值“0”,jackpot int11不为空默认值“0”,paidout int11不为空默认值“0”,键入int11不为空默认值“0”,created timestamp NOT NULL DEFAULT CURRENT_timestamp ENGINE=InnoDB DEFAULT CHARSET=latin1I我不想装箱一个新表我只想按用户id对这数百万行进行分组,并将其金额相加以保持最终余额。然后按查询写入分组。