首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql - 多张千万级统计数据实践笔记(PHP Script)

概述项目场景是给做用户年报,项目属于活动类型,需要维持1个月左右,需要统计用户操作的一些数据,主要是统计方面的,当时注册用户大概280w左右,书单、评论、打赏还可以,之前的数据做过分,只有阅读记录log...答案是取1000条,如果服务器的内存允许,一次可以取更多条,应该尽量避免mysql进程中连接和断开的消耗,性能提高的非常明显,17w测试数据,从8条/秒 提升到 140条/秒!...获取Mysql中最小的数据,主要统计用户行为,所以对用户分组SELECT `user_id` ,`novel_id` ,`chapter_id` ,MIN(DATETIME) AS `datetime`...以下实例使用了 INSERT IGNORE INTO,执行后不会出错,也不会向数据中插入重复数据,而 REPLACE INTO 如果存在 primary 或 unique相同的记录,则先删除掉。...其实有一个问题特别迷惑,Mysql数据库里的数据就是以特殊结构存储(B-tree)的文件,Redis中的数据也是用(list、hash)结构存储的数据,存储上没有什么太大的不同,只是有快慢的区别。

1K50
您找到你想要的搜索结果了吗?
是的
没有找到

MySQL中10多张关联要做优化,怎么理解逻辑幂等

最近优化了一条MySQL的慢查询SQL,还是蛮有感触,小结一下。...那就是里面有一个明显全扫描的逻辑,也就意味着尽管这么多表关联,但是数据量也可以接受,在优化器解析时大部分逻辑是走了索引,优化好最后一个全扫描,整个问题就迎刃而解了。...整个SQL的逻辑是输出其中product数据(字段prod_id,prod_name)和tag数据(tag_url),其中表tag和tag_product)他们通过字段(tag_id)进行关联...整个逻辑其实从上面的图看起来还是有点别扭,tag_product的数据还得反向和外部的进行关联。...所以对于上面的逻辑,其实数据product和tag要联合输出数据,需要借助一个中间tag_product,那么tag_product应该是连接数据的纽带,一个相对比较合理的方式就是其实基于product

3.4K10

MySQL统计数据库所有数据

场景:mysql统计一个数据库里所有数据量,最近在做统计想查找一个数据库里基本所有的数据量,数据量少的通过select count再加起来也是可以的,不过数据有点多,不可能一个一个地查 记得在...Navicat里,选择一个数据量,点击,如图: 是可以看到所有具体的数据行的 然后可以通过sql实现?...WHERE TABLE_SCHEMA = '数据库名称' and table_name not in ('不查询的名称') ORDER BY table_rows DESC; 要统计的...大概意思是对于MyISAM才是正确的统计数据,但是对于InnoDB引擎的,可能与实际值相差 40% 到 50%,所以只是一个大概的统计 所以针对这种情况,要更改存储引擎,肯定是不太合适,因为InnoDB...是默认的存储引擎,能支持事务外健,并发情况性能也比较好 所以,根据网上的做法,重新analyze 对应,在mysql8.0版本是不管用的,发现查询数据还是不对,估计是mysql版本太高,mysql5版本没验证过

6.7K10

python 统计MySQL大于100万的

一、需求分析 线上的MySQL服务器,最近有很多慢查询。需要统计出行数大于100万的,进行统一优化。...需要筛选出符合条件的统计到excel中,格式如下: 库名 名 行数 db1 users 1234567 二、统计的行数 统计的行数,有2中方法: 1....通过查询mysql的information_schema数据库中INFODB_SYS_TABLESTATS,它记录了innodb类型每个大致的数据行数 2. select count(1) from... = 3  # 超时时间 ) cur = conn.cursor()  # 创建游标 # 获取mysql中所有数据库 cur.execute('SHOW DATABASES') data_all = cur.fetchall...自带的数据库         exclude_list = ["sys", "information_schema", "mysql", "performance_schema"]         if

1.4K20

php清空mysql数据,mysql怎么清空数据数据

mysql中,可以利用“DELETE”和“TRUNCATE”关键字来清空数据中的数据,具体语法为“DELETE FROM 数据;”和“TRUNCATE TABLE 数据;”。...本教程操作环境:windows7系统、mysql8版、Dell G3电脑。 MySQL 提供了 DELETE 和 TRUNCATE 关键字来删除中的数据。...MySQL DELETE关键字 在 MySQL 中,可以使用 DELETE 语句来删除的一行或者多行数据。...删除中的全部数据 示例:删除 tb_courses 中的全部数据mysql> DELETE FROM tb_courses; Query OK, 3 rows affected (0.12 sec)...它们都用来清空中的数据。 DELETE 是逐行一条一条删除记录的;TRUNCATE 则是直接删除原来的,再重新创建一个一模一样的新,而不是逐行删除中的数据,执行数据比 DELETE 快。

12.3K40

如何统计数据数量

如何统计数据数量 1. count(*) 在统计一个行数的时候,我们一般会使用 select count(*) from t。那么count(*) 是如何实现的呢?...1.2 InnoDB 在InnnoDB中,需要把数据一行行的读出来,累计计数。 1.3 为什么InnoDB 不跟MyISAM一样把数据存起来?...server层对于返回的每一行,放数字1进去,然后判断不为null的,累加1 MySQL 针对count(*)做了优化,执行效果较快。 count(字段) 返回的是字段不为null的总个数。...用缓存系统计数 对于更新频繁的数据库,可能会考虑使用缓存系统支持。但是缓存系统有可能丢失更新。另一种情况就是,缓存有可能在多个会话并发操作的时候,出现数据不一致的情况。 3....用数据库计数 将数量的计数值存放在单独的中。 3.1 解决了崩溃失效的问题 InnoDB支持崩溃恢复不丢失数据。 3.2 解决了数据不一致问题 ?

2.2K30

MYSQL 的手动更新统计分析记录

大致上大部分的数据库都有统计分析,主要的作用就是在语句执行的情况下,能尽量的选择相对正确的方式来走执行计划,越准确的统计分析,可以带来更好的执行计划和数据库的语句执行性能,但相对来说越准确的统计分析,也会带来系统在统计时的性能消耗...,越大的数据库系统,对统计分析的需求和要求也就越高。...从MYSQL 5.6 开始,统计分析的信息会固化在系统的存储中,通过下面的语句可以查看我们相隔的开关是否打开。...而我们可以进行一个测试,关于MYSQL的索引和真是的信息之间是否有差距。...= 'employees'; 同理也可以更新 innodb_index_stats表里面的数据 以上方法仅仅使用于统计分析的不准确严重影响到了执行计划,一般我们还是不要动系统中的统计分析,另外这样做的另一个问题就是

3.8K30

统计信息记录|全方位认识 mysql 系统库

在上一期《数据库对象信息记录|全方位认识 mysql 系统库》中,我们详细介绍了mysql系统库中的元数据记录,本期我们将为大家带来系列第四篇《统计信息记录|全方位认识 mysql 系统库》,下面请跟随我们一起开始...持久统计信息存储在mysql.innodb_table_stats和mysql.innodb_index_stats中,前者存放结构、数据行相关的统计信息,后者存放索引值相关的统计信息。...但要注意,这里说的是会触发重新计算索引统计信息,而不是mysql.innodb_table_stats中的及其数据相关的统计信息,要想在添加索引时数据相关的统计信息同时更新到mysql.innodb_table_stats...统计信息持久化依赖于mysql数据库下的innodb_table_stats和innodb_index_stats,这些在安装,升级和源代码构建过程中会自动设置。...注意:MySQL 5.7中系统变量innodb_stats_persistent_sample_pages定义的持久化统计信息采样页为20,这里示例中的sample_size列值为1是因为数据量太小

1K30

mysql清空数据库所有的命令_mysql清空数据命令是什么?_数据库,mysql,清空数据

mysql服务无法启动怎么解决_数据mysql服务无法启动的解决方法是: 1、配置环境变量; 2、在mysql安装目录下,新建my.ini文件,设置默认字符集、端口、存储引擎等; 3、执行【mysqld...mysql清空数据命令有以下两种语句: 语句1: delete from 名; 语句2: truncate table 名; 比 较:mysql查看数据库命令是什么?..._数据mysql查看数据库命令: 1、查看所有数据库命令是:“show databases”。 2、查看当前使用的数据库命令是:“select database()”。...(1)不带where参数的delete语句可以删除mysql中所有内容,使用truncate table也可以清空mysql中所有内容。...(3)delete的效果有点像将mysql中所有记录一条一条删除到删完,而truncate相当于保留mysql的结构,重新创建了这个,所有的状态都相当于新

19.6K20
领券