首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏JavaEdge

    2 数据库结构优化

    2.1 数据库结构优化的目的 减少数据冗余 尽量避免数据维护中出现更新,插入和删除异常 插入异常 如果表中的某个实体随着另一个实体而存在 先看一个表结构 为学号,课程名称列定义主键约束 ,即一个学生只能选相同的课程一次 看看数据 存在数据冗余 插入一门新课试试 由于主键约束的存在,在没有学生选择这门课时无法将新课程插入到表中 更新异常 如果更改表中的某个实体的单独属性时,需要对多行进行更新 更新了2数据,数据越多,同时更新的也就越多,可看出和数据冗余有很大联系 删除异常 如果删除某一个实体会导致其他实体的消失 节约数据库存储空间 提高查询效率 2.2 数据库结构设计的步骤 2.3 数据库设计范式 有时需要反范式 符合第一范式 将上个表拆成两个表,即符合第二范式 上面的study学生信息表,学号可以确定学院, 而学院地址又与学院有关系,所以学院地址和学号传递依赖关系,所以对其拆分符合第三范式 学生表数据 学生信息表 学院信息表 2.4 数据库需求分析及逻辑设计实例 需求说明 需求分析及逻辑设计,设定用户名为主键

    1.4K71发布于 2018-05-16
  • 来自专栏YoungGy

    优化2】整数优化

    或的逻辑约束 三个选择的或 只有才 更多或 整数可除 多边形组合 固定花费 分段线性 组合型 set covering set packing 食堂定位 地图填色 Julia例子 9数独 概述 整数优化就是线性优化 x1被选中当且仅当x2被选中。 x2或x3被选中,可以都被选中。 x2或x3被选中,不可以都被选中。 对应的IP约束为: x1-x3<=0 x1+x5<=1 x1-x2=0 x2+x3>=1 x2+x3=1 或的逻辑约束 或的逻辑问题,可以用用bigM方法去解决,其思想是通过添加新的变量,将部分约束变成多余的 例如,对于问题 [图片] 或 [图片] (两者可以都出现),y1、y2的定义域是[0,5]。 and column j to j+2 @constraint(m, sum{x[r,c,k], r=i:i+2, c=j:j+2} == 1) end for i = 1:9, j = 1:

    1.9K50发布于 2018-01-05
  • 来自专栏罗西的思考

    PyTorch分布式优化器(2)----数据并行优化

    [源码解析] PyTorch分布式优化器(2)----数据并行优化器 目录 [源码解析] PyTorch分布式优化器(2)----数据并行优化器 0x00 摘要 0x01 前文回顾 0x02 DP 之中的优化器 ,分为三篇文章,分别是基石篇,DP/DDP/Horovod 之中数据并行的优化器,PyTorch 分布式优化器,按照深度递进。 本文介绍数据并行DP/DDP/Horovod 之中的优化器。 数据并行之中的优化器就是另外一种情况,因为每个worker自己计算梯度,所以优化器主要技术难点是: 每个worker有自己的优化器?还是只有一个worker才有优化器,由他统一做优化? DP 修改了 forward 和 backward 方法,把每个线程的梯度归并在一起然后做优化,所以虽然是数据并行,但是优化器不需要做修改。

    1.4K30编辑于 2021-12-09
  • 来自专栏高性能服务器开发

    数据库进阶2 Mysql高并发优化

    虽然查询优化器可以根据where子句自动的进行查询优化,但有时查询优化器就会不按照您的本意进行快速查询。 在查询分析阶段,查询优化器查看查询的每个阶段并决定限制需要扫描的数据量是否有用。 如果一个阶段可以被用作一个扫描参数(SARG),那么就称之为可优化的,并且可以利用索引快速获得所需数据。 所以,优化查询最重要的就是,尽量使语句符合查询优化器的规则避免全表扫描而使用索引查询。 数据类型的不兼容可能使优化器无法执行一些本来可以进行的优化操作。 三、算法的优化 尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该考虑改写。.

    2.5K10发布于 2018-07-25
  • 来自专栏mathor

    枚举+优化(6)——双指针优化2

    ans ans = s } } } print ans  这个算法的时间复杂度是O(NML),NML是三个数组的长度,最大值都是10万,显然会超时 优化 第二个数组是1,2,4,5,10,13,第三个数组未知,什么清空都有可能。 + 1],c[k + 1]); } cout << ans; return 0; } 例4.题目链接:hihoCoder1607 思路  一般的暴力枚举这题肯定是过不了的,数据量太大 ,那我们就要想办法优化,能不能只枚举Ai,而将符合条件的Aj数量直接算出来,而不是枚举出来。

    68650发布于 2018-06-19
  • 来自专栏java学习java

    延时队列优化2

    看起来似乎没什么问题,但是在最开始的时候,就介绍过如果使用在消息属性上设置TTL的方式,消息可能并不会按时“死亡“,因为RabbitMQ只会检查第一个消息是否过期,如果过期则丢到死信队列, 如果第一个消息的延时时长很长,而第二个消息的延时时长很短,第二个消息并不会优先得到执行。

    1.9K30编辑于 2022-11-13
  • 来自专栏技术杂记

    Mysql 优化存储2

    pt-table-checksum 生成的结果来同步差异部分的,但是如若不使用 --execute 就不会执行,使用 --print 可以打印出差异的部分,我们就是通过有无差异的记录条目来确认一致性 从结果来看,是空的,说明主备数据是一致的 Note: 此时指定的host要是slave,也就是待检查的对象 ---- 停止复制 在待优化的slave上停止复制 mysql> show slave status\G mysql> stop slave ; 停止复制后,最好再使用一个文本记录一下当前的position,以避免窗口信息丢失后,又执行了reset slave命令产生不良后果 ---- 生成优化语句 mysql> select concat(

    62610编辑于 2022-03-21
  • 来自专栏tea9的博客

    优化android程序2

    异步获取数据 http://www.jianshu.com/p/e4d99f8d1489 绝不可以把网络获取数据或耗时操作(下载图片,批量保存数据等)放到主UI线程 做法:在新线程中准备数据,然后再通知主 UI线程异步获取数据并显示 文件资源缓存 对于尺寸比较大的文件获知需要从网络下载的图片等 SDCard缓存策略 实现思路是吧网络图片的url地址转化该图片的缓存id 程序异步获取图片内容之后就会存储到与缓存 id对应的sdcard缓存文件中,这样当再次遇到相同url地址的图片是,程序就会根据缓存id直接从sdcard缓存文件中获取到图片数据,并构造成Bitmap对象显示。 数据库缓存 存到本地数据库以便管理 android的本地数据是SQLite 一个高速的文本数据库 使用这种方式有两种好处 1.客户端可以快速的从本地数据库获取数据 就算偶尔出现网络中断,我们也可以看到信息 2.客户端每次只需要到服务端获取最新的数据 这样大大减少不必要的流量

    31520编辑于 2022-07-16
  • 来自专栏mathor

    枚举+优化(4)——哈希表优化实例2

    例3.四平方和 思路1:枚举abcd,判断a^2^+b^2^+c^2^+d^2^是否等于N  分析规模  a:0 ~ sqrt(500000 / 4)  b:0 ~ sqrt(500000 / 3 =10^8^ 思路2:枚举abc,判断N-a^2^-b^2^-c^2^是不是完全平方数  分析规模  a:0 ~ sqrt(500000 / 4)  b:0 ~ sqrt(500000 / 3)  c:0 ~ sqrt(500000 / 2)  总枚举量10^9^,依然超时 问题:只枚举ab,那么余下R=N-a^2^-b^2^,能否快速求出c^2^+d^2^=R的解? 这里哈希表就派上用场了,我们可以预先求出R=c^2^+d^2^的解,用一个unordered_map<int ,int> f来保存一个R对应的c  比如f[5]=1,表示R=5的解是c=1,d=2可以由 } 第一次作业  先说说的思路,当时看到这题有点懵,可能还是对哈希算法掌握的不够,怎么都想不到用哈希的方法去做,索性先写了个O(N^2^)的两重循环,想着这几天学的优化,都是减少循环层数,总共就两层

    90750发布于 2018-06-08
  • 来自专栏大数据平台TBDS

    Hiveserver2 性能优化与GC优化

    jdbc连接hiveserver2),执行简单查询、复杂分析、超复杂分析等不同的sql任务,session并发量还很高(五六百甚至上千的并发),本质上要求大数据平台同时具备oltp的高并发与olap的高分析能力 这种故障对应于上面介绍的“故障现象1”,通过jdbc无法正常连接到hiveserver2。为了解决该故障,可以通过优化内存GC可以缓解hiveserver2的GC卡死问题。 因此,可以通过优化hiveserver2的内存GC来优化hiveserver2,使之支持更高的并发、能够执行更复杂的sql任务。 因此,将hiveserver2迁移到资源非常空闲的另外一台服务器。 4.2 采用优化GC机制和参数 之前hiveserver2进程的启动参数没有添加GC参数,也就是说采用系统默认的GC机制。 经过上面两种优化方法之后,hiveserver2目前非常稳定。当然基于hadoop平台的hiveserver2本身支持的jdbc并发连接数有限,不可能做到关系型数据库那样的oltp高并发性能。

    6.5K103发布于 2018-06-19
  • 来自专栏迁移内容

    高性能MySQL(2)——Schema与数据类型的优化

    一、选择优化数据类型 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管 存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。 尽量避免NULL 如果査询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使 得索引、索引统计和值比较都更复杂。 VARCHAR需要使用1或2个额外字节记录字符串的长度:如果列的最大长度小于或 等于255字节,则只使用1个字节表示,否则使用2个字节。 在关系型数据库中有六中范式:第一范式(1NF),第二范式(2NF),第三范式(3NF),BCNF,第四范式(4NF),第五范式(5NF)。 参考: 《高性能 MySQL 第三版》 Schema与数据类型优化 MySQL三大范式和反范式 [MySQL中范式与反范式的优缺点](

    1.1K20编辑于 2022-12-01
  • 来自专栏IMWeb前端团队

    webpack2 终极优化

    webpack2增加了一些新特性也正式发布了一段时间,是时候告诉大家如何用webpack2优化你的构建让它构建出更小的文件尺寸和更好的开发体验。 优化输出 打包结果更小可以让网页打开速度更快以及简约宽带。 可以通过这以下几点做到 压缩css css-loader 在webpack2里默认是没有开启压缩的,最后生成的css文件里有很多空格和tab,通过配置 css-loader? 这样就可以优化支持tree-shaking的库。 优化开发体验 优化开发体验主要从更快的构建和更方便的功能入手。

    1.7K110发布于 2018-01-08
  • 来自专栏ThoughtWorks

    性能优化那些事儿(2

    性能优化应该什么时候开始 有些性能问题是随着时间的积累慢慢产生的,比如系统一开始数据量很小的时候,没有什么问题,等到数据积累到一定程度,问题就暴露出来了;有些问题是由于访问量的过大造成的,比如系统平时没问题 性能问题就如同一颗定时炸弹,只要数据量访问量一上来,或者各个团队在开发迭代中没有注重性能的意识,早晚会炸。既然迟早会出问题,那我们应该什么时候开始进行性能优化呢? 2)Linux中Swap强烈建议关闭,打开坏处多于好处,会有意想不到的问题。3)高流量的应用需要注意网卡中断问题,使用CPU亲和性绑定网卡。 对数据库的性能优化是整个系统的核心,比如,我们常用的各种缓存都是为了减少对数据库的压力。开启慢SQL搜集,通过分析慢SQL来优化系统中效率低下的SQL语句。 2)锁竞争:单机环境下,锁的使用可能会带来大量的线程资源浪费,从而给系统带来性能开销;而分布式环境下,使用分布式锁也可能造成大量的请求堆积,影响整个系统性能。

    47420编辑于 2022-03-04
  • 来自专栏PHP在线

    数据优化

    数据优化 读写分离,在X2的版本中,我们引入了多SQL服务器的支持,在主从服务器中,你可以配置写服务器跟读服务器,这样对于负载高的站点中可以使用这个 功能达到读写分离,降低由于写过程序中造成的MySQL * $_config['db']['1']['tablepre'] = 'pre_';// 表名前缀 * * $_config['db']['2']['dbhost'] = 'localhost 2、pid字段保留,仍然是auto_increment(单独的一个表),保持唯一,其值在一个单独的表中记录, 保留此字段的主要目的是可以让原程序的基本不用做修改。 2、查看帖子时,如果增量点击数到100,则使用进程锁将数据更新到thread表并更新增量点击数为0。 3、回贴时将增量点击数和回复数一起更新到thread表,并更新增量点击数为0。 4、执行计划任务:每天3点,5分钟一次,一次取500条数据更新到thread表, 并删除此500条数据,以减少forum_threadaddviews表的大小。

    78480发布于 2018-03-07
  • 来自专栏IMWeb前端团队

    webpack2 终极优化

    webpack2增加了一些新特性也正式发布了一段时间,是时候告诉大家如何用webpack2优化你的构建让它构建出更小的文件尺寸和更好的开发体验。 优化输出 打包结果更小可以让网页打开速度更快以及简约宽带。 可以通过这以下几点做到 压缩css css-loader 在webpack2里默认是没有开启压缩的,最后生成的css文件里有很多空格和tab,通过配置 css-loader? 这样就可以优化支持tree-shaking的库。 优化开发体验 优化开发体验主要从更快的构建和更方便的功能入手。

    97820发布于 2019-12-05
  • 来自专栏小狐狸说事

    B2主题优化

    B2主题优化 ---- 安装Opcache扩展 php在执行的时候需要每次都从磁盘读取文件信息,再编译成脚本,这个过程非常消耗时间,我们强烈建议您安装php的 opcache 扩展,用来缓存已经编译好的 但是以目前的互联网生态来说,压缩可以,合并是不推荐的,因为现代浏览器均支持 HTTP/2 协议,如果您的服务器开启了HTTP/2则不必合并css和js文件。 HTTP/2协议支持多个资源同时加载,这意味着您的多个css和js文件都可以同时加载,如果将他们合并成一个文件,加载渲染速度反而会变慢。 做了以上优化,还需要注意什么? 1、如果您是开发者,要对主题进行二次开发,请不要使用上面的优化,待开发完毕后再使用。 2、如果您开启了上面的优化,主题的一些设置项设置之后无法生效,请刷新缓存。 3、如果您同一台服务器装了几个WordPress站点,注意安装WP的时候,每个站点的数据库前缀请设置成不同的,以免在使用 Redis 或者 Memcached 的时候造成缓存的混淆。

    1.1K10编辑于 2022-11-17
  • 来自专栏腾讯IMWeb前端团队

    webpack2 终极优化

    webpack2增加了一些新特性也到了预发布阶段,是时候告诉大家如何用webpack2优化你的构建让它构建出更小的文件尺寸和更好的开发体验。 优化输出 打包结果更小可以让网页打开速度更快以及简约宽带。 可以通过这以下几点做到 压缩css css-loader 在webpack2里默认是没有开启压缩的,最后生成的css文件里有很多空格和tab,通过配置 css-loader? 这样就可以优化支持tree-shaking的库。 优化开发体验 优化开发体验主要从更快的构建和更方便的功能入手。 要使用它你需要在执行webpack的时候带上--json --profile2个参数,这代表让webpack把构建结果以json输出并带上构建性能信息,使用如下: webpack --json --profile

    96420编辑于 2022-06-29
  • 来自专栏方丈的寺院

    存储优化(2)-排序引起的慢查询优化

    ORDER BY id DESC LIMIT 0, 10 play是抽奖记录表,sql是查抽中奖品的前10个大奖中奖者,来吸引其他用户参与抽奖,biz_id建了索引 例2 某日上线一个新功能,在第五次压测时,数据库cpu告警 查看数据库慢日志,没有一条慢sql(耗时>100ms)。 总结一下,造成数据库服务问题主要根由是 查询没有利用到索引排序 索引过滤后下面数据仍然有很多,需要扫描排序的数据很多 请求的并发量很高,数据库IOPS使用率高,内存占用高。 数据库升级配置(需要做到对业务无影响) 线上问题的临时解决方案只能解一时燃煤之急,真正的解决问题还是需要从查询着手。 查询优化 业务侧避免此类查询 从业务侧分析,是不是需要此类查询。 这个业务侧可以将数据保存到在redis中,listz中存topN的数据。然后发现有中大奖的人,扔到redis队列即可。

    1.2K20发布于 2020-03-20
  • 来自专栏小怪聊职场

    MySQL(六)|《千万级大数据查询优化》第二篇:查询性能优化2

    在上一篇文章MySQL(五)|《千万级大数据查询优化》第二篇:查询性能优化(1)中讲到一条SQL的查询执行路径如下图5-1所示: 图5-1 步骤如下: 客户端发送一条查询给服务器。 所以在前一章节的时候我们强烈在分页时一定要使用LIMIT限制MySQL只返回需要的数据的原因。 2、查询状态 每一个MySQL查询,任何时间都会有一个状态,该状态表示了MySQL当前正在做什么。 我一般使用SHOW FULL PROCESSLIST命令查看当前SQL执行,包括执行状态、是否锁表等信息,如下图5-2所示。 图5-2 该命令返回结果中的Command列表示当前的状态。 4、查询优化处理 任何缓存中没有需要的数据,下一步就是服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划。 SQL解析和预处理主要验证是否使用了错误的关键字、语法是否有误、数据表和数据列是否存在,名称和别名是否有歧义等问题。 当语法验证都是合法的之后,优化器会将SQL转化为执行计划。

    1.2K100发布于 2018-05-21
  • 来自专栏高性能服务器开发

    数据库进阶4 Mysql 性能优化20个原则(2)

    这样,MySQL内部会启动为你优化Join的SQL语句的机制。 而且,这些被用来Join的字段,应该是相同的类型的。 (两个表的字符集有可能不一样) 1// 在state中查找company 2$r = mysql_query("SELECT company_name FROM users 3 LEFT JOIN 1// 千万不要这样做: 2$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1"); 3 4// 这要会更好: 5 1// 不推荐 2$r = mysql_query("SELECT * FROM user WHERE user_id = 1"); 3$d = mysql_fetch_assoc($r); 4echo 只有表中有实际的数据,这些建议才会变得有用,因为要做一些大的决定是需要有数据作为基础的。

    65020发布于 2018-07-25
领券