• 关于

    数据库操作出现问题怎么解决

    的搜索结果

问题

数据库在数据导入时的并发问题(使用myBatis)

长安归故里. 2020-01-07 13:51:30 0 浏览量 回答数 1

回答

1.第一个问题通过数据版本,也就是所谓的乐观锁解决。 2.先写日志log,然后ack机制。其实很多这种方式被很多应用所用到比如mysql。 3.用户注册本身这个功能不属于高频调用,所以性能上不需要考虑太多,直接悲观锁实现即可。而且这种可能性非常低,就算失败,那么返回给用户一个能理解的失败信息即可。######回复 @sixliu:谢谢回复靠谱的回答真不多我再等等看...######回复 @花歌:第二个可能没太理解你的场景######谢谢咯~1和3可以,我看看还有什么别的方案,差不多也就这么做了,2的话再考虑考虑吧感觉还是有点不适用场景###### 三个问题,其实就是同一个并发的问题,###### 都是并发中会出现的问题。 1说的在内存里的情况,就是2。 1说的在数据库中的情况,就是3。 在数据库中,数据库自己会有锁来解决这个问题,遇到这种情况会修改失败,程序中捕获这种异常做处理返回给前台就可以了。 在内存中,单机单进程单线程,会有顺序,因此没有问题。多机或多进程或多线程操作同一数据,会出现此问题。一种实现方式是加锁,相当于仿照数据库那样的实现,内存正在被修改时,其他的修改会被阻塞或者异常终止。另一种方式是通过队列实现顺序操作,所有的修改都发送到一个程序修改。######让我想想,嗯差不多,回答比较靠谱,谢了先其实...我用的是nodejs全异步操作,前面的数据库操作没完成,后面的也可以进入函数,如果网络延迟,就会造成执行完成顺序和开始执行顺序不一致...等等想一会再问你哈###### 1.是设计上的问题 两个操作如果有先后顺序 就得先后执行  一个操作完了之后再下一个操作 不可能明知道有一前一后却还要非得一起 2.这个就是非常典型的数据库事务 就是保证多个不相关的操作的原子性 只要其中一个出问题就全部回滚 不存在有的成功有的失败 事务还是个挺复杂的东西 mongodb都还不支持事务 多服务器之间分布式的事务也是有些麻烦的  3.同时的操作数据库自己会进行锁的处理 对数据库来说还是一前一后  如果某个字段设置了唯一索引 那后面的那个必然会出错 代码里正常处理就可以了 所以用户名不唯一的处理有两个地方 一个是在插入之前 一个是在插入时抛出唯一索引异常   当然也可以在新建用户这一整个操作上加锁 全局同时只能有一个用户在新建 不过这样可能效率不高 ######问题1现实情况就是这样用户以为他的操作有顺序但基于连接池算是并发操作即时不用池那也是异步操作不能保证顺序所以只能考虑数据库锁时间戳问题2还没到数据库呢...只考虑多个内存中的对象操作问题3现在就是这样处理的###### 1.加锁 2.加事务控制 3.异常捕获与处理 工作不满一年吧######不好意思...工作6年多了开发经验10多年问题1暂时用乐观锁解决了问题2事务控制个毛线问题你可能是没读清内存中的几个对象而已和数据库无关就是事务也得自己实现这话谁都会说我想听的是备忘录模式这种...到底怎么做能优雅点还是我从需求设计上可能有问题问题3靠数据库唯一约束出错返回太暴力现在就是这么做的也可以数据库加锁怕影响性能###### 1,updateusersetstatus=2wherestatus=3andid=1; 2,用户名设置唯一索引。###### 可以用现在拷贝上操作,再合并的方法解决。1、按顺序合并。2、按状态合并。3、按索引合并。

优选2 2020-06-09 10:36:32 0 浏览量 回答数 0

回答

1.第一个问题通过数据版本,也就是所谓的乐观锁解决。 2.先写日志log,然后ack机制。其实很多这种方式被很多应用所用到比如mysql。 3.用户注册本身这个功能不属于高频调用,所以性能上不需要考虑太多,直接悲观锁实现即可。而且这种可能性非常低,就算失败,那么返回给用户一个能理解的失败信息即可。######回复 @sixliu : 谢谢回复 靠谱的回答真不多 我再等等看...######回复 @花歌 : 第二个 可能没太理解你的场景######谢谢咯~ 1和3可以,我看看还有什么别的方案,差不多也就这么做了,2的话 再考虑考虑吧 感觉还是有点不适用场景###### 三个问题,其实就是同一个并发的问题,###### 都是并发中会出现的问题。 1说的在内存里的情况,就是2。 1说的在数据库中的情况,就是3。 在数据库中,数据库自己会有锁来解决这个问题,遇到这种情况会修改失败,程序中捕获这种异常做处理返回给前台就可以了。 在内存中,单机单进程单线程,会有顺序,因此没有问题。多机或多进程或多线程操作同一数据,会出现此问题。一种实现方式是加锁,相当于仿照数据库那样的实现,内存正在被修改时,其他的修改会被阻塞或者异常终止。另一种方式是通过队列实现顺序操作,所有的修改都发送到一个程序修改。######让我想想,嗯 差不多,回答比较靠谱,谢了先 其实...我用的是nodejs 全异步操作,前面的数据库操作没完成,后面的也可以进入函数,如果网络延迟,就会造成执行完成顺序和开始执行顺序不一致... 等等想一会再问你哈###### 1. 是设计上的问题  两个操作如果有先后顺序  就得先后执行   一个操作完了之后再下一个操作   不可能明知道有一前一后 却还要非得一起 2. 这个就是非常典型的数据库事务   就是保证多个不相关的操作的原子性  只要其中一个出问题就全部回滚  不存在有的成功有的失败  事务还是个挺复杂的东西   mongodb都还不支持事务  多服务器之间分布式的事务也是有些麻烦的   3. 同时的操作 数据库自己会进行锁的处理  对数据库来说还是一前一后    如果某个字段设置了唯一索引  那后面的那个必然会出错  代码里正常处理就可以了   所以用户名不唯一的处理有两个地方  一个是在插入之前  一个是在插入时抛出唯一索引异常      当然也可以在新建用户这一整个操作上加锁   全局同时只能有一个用户在新建  不过这样可能效率不高  ######问题1 现实情况就是这样 用户以为他的操作有顺序 但基于连接池 算是并发操作 即时不用池 那也是异步操作 不能保证顺序 所以只能考虑数据库锁 时间戳 问题2 还没到数据库呢... 只考虑多个内存中的对象操作 问题3 现在就是这样处理的###### 1.加锁 2.加事务控制 3.异常捕获与处理 工作不满一年吧######不好意思... 工作6年多了 开发经验10多年 问题1 暂时用乐观锁解决了 问题2 事务控制个毛线 问题你可能是没读清 内存中的几个对象而已 和数据库无关 就是事务也得自己实现 这话谁都会说 我想听的是 备忘录模式 这种... 到底怎么做能优雅点 还是我从需求设计上可能有问题 问题3 靠数据库唯一约束出错返回太暴力 现在就是这么做的 也可以数据库加锁 怕影响性能###### 1,update user set status=2 where status=3 and id=1; 2,用户名设置唯一索引。###### 可以用现在拷贝上操作,再合并的方法解决。1、按顺序合并。2、按状态合并。3、按索引合并。

爱吃鱼的程序员 2020-05-29 20:15:24 0 浏览量 回答数 0

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

问题

三个看似简单但不容易解决的设计问题? 400 报错

爱吃鱼的程序员 2020-05-29 20:15:22 0 浏览量 回答数 1

问题

Postgres 向量计算。ERROR: row is too big: size 16392, maximum size 8160

愤怒的猿 2019-12-01 19:40:34 1334 浏览量 回答数 1

问题

调用Mongodb API 显示 couldn't connect to server

cantary 2019-12-01 19:34:32 1571 浏览量 回答数 0

问题

遇到 java.sql.BatchUpdateException怎么解决?java错误

爱吃鱼的程序员 2020-05-26 12:46:34 4 浏览量 回答数 1

回答

    你是在用DBCP吗? 你的逻辑里面是否有下面这些的情况: 方法A里面获得一个连接,然后做一些DB操作。然后释放该连接。但是方法A里面调用了方法B。方法B的逻辑和方法A的类似。     这样有可能出现:一个连接在没有被释放的情况下,又去申请一个新连接。运行一段时间之后连接池耗光。就会出现类似的问题。######嗯,我也是这么想的。我去查看了,确实存在这样的问题。不过想问一下,就是如果我一直是一个连接,通过多次传递引用,会不会造成什么问题呢?######把转接池参数minIdle调大点。其它的参数也可以试着调调。 ######    如果你的应用里面有这种用法,赶紧改了把。不改怎么调参数都不能根本解决问题。     至于你说的多次传递引用,我的观点是:一个DB连接用完了就赶紧释放,不要占用太长的时间。如果连接占用时间过长,会影响你整个系统的稳定性。毕竟池子里面就那么多连接。     最后一点个人的感受:最好不要直接用DBCP。对程序员有很多要求。需要大家沟通好。一旦你的程序写的有问题,调试起来麻烦。低级一点的用DBUtils,高级一点的用mybatis或者hibernate。######嗯,多谢提醒哈!###### 我也遇到了这个问题,这个项目上线运营已经很久了,最近才冒出这个问题,我查看了代码确实存在一个方法中得到了一个数据库的连接之后没有释放,然后在这个方法中执行的一个方法里又去申请获得数据库,我修改了代码打印了日志,明天更新项目,继续跟踪吧。 ######回复 @朱丽娟 : 仔细的看了下代码,发现这个方法形成了数据的死锁,第一次获得的数据库连接对一条数据进行update(没有提交),然后再获得一个连接对同一条数据进行update,结果就死锁了,外带这两个数据库连接也不释放。######嗯。呵呵,问题比较隐性丫######这个问题要怎么解决呢?

kun坤 2020-05-29 13:05:36 0 浏览量 回答数 0

回答

MongoDB ACID事务支持 这里要有一定的关系型数据库的事务的概念,不然不一定能理解的了这里说的事务概念。 下面说一说MongoDB的事务支持,这里可能会有疑惑,前面我们在介绍MongoDB时,说MongoDB是一个NoSQL数据库,不支持事务。这里又介绍MongoDB的事务。这里要说明一下MongoDB的事务支持跟关系型数据库的事务支持是两码事,如果你已经非常了解关系型数据库的事务,通过下面一副图对比MongoDB事务跟MySQL事务的不同之处。 MongoDB是如何实现事务的ACID? 1)MongoDB对原子性(Atomicity)的支持 原子性在Mongodb中到底是一个什么概念呢?为什么说支持但又说Mongodb的原子性是单行/文档级原子性,这里提供了一个MongoDB更新语句样例,如下图: MongoDB是如何实现事务的ACID? 更新“username”等于“tj.tang”的文档,更新salary、jobs、hours字段。这里对于这三个字段Mongodb在执行时要么都更新要么都不更新,这个概念在MySQL中可能你没有考虑过,但在MongoDB中由于文档可以嵌套子文档可以很复杂,所以Mongodb的原子性叫单行/文档级原子性。 对于关系型数据库的多行、多文档、多语句原子性目前Mongodb是不支持的,如下情况: MongoDB是如何实现事务的ACID? MongoDB更新条件为工资小于50万的人都把工资调整为50万,这就会牵扯到多文档更新原子性。如果当更新到Frank这个文档时,出现宕机,服务器重启之后是无法像关系型数据库那样做到数据回滚的,也就是说处理这种多文档关系型数据库事务的支持,但MongoDB不支持。那么怎么解决Mongodb这个问题呢?可以通过建模,MongoDB不是范式而是反范式的设计,通过大表和小表可以把相关的数据放到同一个文档中去。然后通过一条语句来执行操作。 2)MongoDB对一致性(consistency)的支持 对于数据一致性来说,传统数据库(单机)跟分布式数据库(MongoDB)对于数据一致性是不太一样的,怎么理解呢?如下图: MongoDB是如何实现事务的ACID? 对于传统型数据库来说,数据一致性主要是在单机上,单机的问题主要是数据进来时的规则检验,数据不能被破坏掉。而在分布式数据库上,因为他们都是多节点分布式的,我们讲的一致性往往就是讲的各个节点之间的数据是否一致。而MongoDB在这点上做的还是不错的,MongoDB支持强一致性或最终一致性(弱一致性),MongoDB的数据一致性也叫可调一致性,什么意思呢?如下图: MongoDB是如何实现事务的ACID? MongoDB的可调一致性,也就是可以自由选择强一致性或最终一致性,如果你的应用场景是前台的方式可以选择强一致性,如果你的应用场景是后台的方式(如报表)可以选择弱一致性。 一致性 上面我们讲到了通过将数据冗余存储到不同的节点来保证数据安全和减轻负载,下面我们来看看这样做引发的一个问题:保证数据在多个节点间的一致性是非常困难的。在实际应用中我们会遇到很多困难,同步节点可能会故障,甚至会无法恢复,网络可能会有延迟或者丢包,网络原因导致集群中的机器被分隔成两个不能互通的子域等等。在NoSQL中,通常有两个层次的一致性:第一种是强一致性,既集群中的所有机器状态同步保持一致。第二种是最终一致性,既可以允许短暂的数据不一致,但数据最终会保持一致。我们先来讲一下,在分布式集群中,为什么最终一致性通常是更合理的选择,然后再来讨论两种一致性的具体实现结节。 关于CAP理论 为什么我们会考虑削弱数据的一致性呢?其实这背后有一个关于分布式系统的理论依据。这个理论最早被Eric Brewer提出,称为CAP理论,尔后Gilbert和Lynch对CAP进行了理论证明。这一理论首先把分布式系统中的三个特性进行了如下归纳: 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。 分区容忍性(P):集群中的某些节点在无法联系后,集群整体是否还能继续进行服务。 而CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。 要保证数据强一致性,最简单的方法是令写操作在所有数据节点上都执行成功才能返回成功,也就是同步概念。而这时如果某个结点出现故障,那么写操作就成功不了了,需要一直等到这个节点恢复。也就是说,如果要保证强一致性,那么就无法提供7×24的高可用性。 而要保证可用性的话,就意味着节点在响应请求时,不用完全考虑整个集群中的数据是否一致。只需要以自己当前的状态进行请求响应。由于并不保证写操作在所有节点都写成功,这可能会导致各个节点的数据状态不一致。 CAP理论导致了最终一致性和强一致性两种选择。当然,事实上还有其它的选择,比如在Yahoo的PNUTS中,采用的就是松散的一致性和弱可用性结合的方法。但是我们讨论的NoSQL系统没有类似的实现,所以我们在后续不会对其进行讨论。 强一致性 强一致性的保证,要求所有数据节点对同一个key值在同一时刻有同样的value值。虽然实际上可能某些节点存储的值是不一样的,但是作为一个整体,当客户端发起对某个key的数据请求时,整个集群对这个key对应的数据会达成一致。下面就举例说明这种一致性是如何实现的。 假设在我们的集群中,一个数据会被备份到N个结点。这N个节点中的某一个可能会扮演协调器的作用。它会保证每一个数据写操作会在成功同步到W个节点后才向客户端返回成功。而当客户端读取数据时,需要至少R个节点返回同样的数据才能返回读操作成功。而NWR之间必须要满足下面关系:R+W>N 下面举个实在的例子。比如我们设定N=3(数据会备份到A、B、C三个结点)。比如值 employee30:salary 当前的值是20000,我们想将其修改为30000。我们设定W=2,下面我们会对A、B、C三个节点发起写操作(employee30:salary, 30000),当A、B两个节点返回写成功后,协调器就会返回给客户端说写成功了。至于节点C,我们可以假设它从来没有收到这个写请求,他保存的依然是20000那个值。之后,当一个协调器执行一个对employee30:salary的读操作时,他还是会发三个请求给A、B、C三个节点: 如果设定R=1,那么当C节点先返回了20000这个值时,那我们客户端实际得到了一个错误的值。 如果设定R=2,则当协调器收到20000和30000两个值时,它会发现数据不太正确,并且会在收到第三个节点的30000的值后判断20000这个值是错误的。 所以如果要保证强一致性,在上面的应用场景中,我们需要设定R=2,W=2 如果写操作不能收到W个节点的成功返回,或者写操作不能得到R个一致的结果。那么协调器可能会在某个设定的过期时间之后向客户端返回操作失败,或者是等到系统慢慢调整到一致。这可能就导致系统暂时处于不可用状态。 对于R和W的不同设定,会导致系统在进行不同操作时需要不同数量的机器节点可用。比如你设定在所有备份节点上都写入才算写成功,既W=N,那么只要有一个备份节点故障,写操作就失败了。一般设定是R+W = N+1,这是保证强一致性的最小设定了。一些强一致性的系统设定W=N,R=1,这样就根本不用考虑各个节点数据可能不一致的情况了。 HBase是借助其底层的HDFS来实现其数据冗余备份的。HDFS采用的就是强一致性保证。在数据没有完全同步到N个节点前,写操作是不会返回成功的。也就是说它的W=N,而读操作只需要读到一个值即可,也就是说它R=1。为了不至于让写操作太慢,对多个节点的写操作是并发异步进行的。在直到所有的节点都收到了新的数据后,会自动执行一个swap操作将新数据写入。这个操作是原子性和一致性的。保证了数据在所有节点有一致的值。 最终一致性 像Voldemort,Cassandra和Riak这些类Dynamo的系统,通常都允许用户按需要设置N,R,W三个值,即使是设置成W+R<= N也是可以的。也就是说他允许用户在强一致性和最终一致性之间自由选择。而在用户选择了最终一致性,或者是W 3)MongoDB对隔离性(isolation)的支持 在关系型数据库中,SQL2定义了四种隔离级别,分别是READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。但是很少有数据库厂商遵循这些标准,比如Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ隔离级别。而MySQL支持这全部4种隔离级别。每一种级别都规定了一个事务中所做的修改,哪些在事务内核事务外是可见的,哪些是不可见的。为了尽可能减少事务间的影响,事务隔离级别越高安全性越好但是并发就越差;事务隔离级别越低,事务请求的锁越少,或者保持锁的时间就越短,这也就是为什么绝大多数数据库系统默认的事务隔离级别是RC。 下图展示了几家不同的数据库厂商的不同事物隔离级别。 MongoDB是如何实现事务的ACID? MongoDB在3.2之前使用的是“读未提交”,这种情况下会出现“脏读”。但在MongoDB 3.2开始已经调整为“读已提交”。 下面说说每种隔离级别带来的问题: READ-UNCOMMITTED(读尚未提交的数据) 在这个级别,一个事务的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为“脏读(dirty read)”。这个级别会导致很多问题,从性能上来说,READ UNCOMMITTED不会比其他的级别好太多,但却缺乏其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。 READ-COMMITTED(读已提交的数据) 在这个级别,能满足前面提到的隔离性的简单定义:一个事务开始时,只能“看见”已经提交的事务所做的修改。换句话说,一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。这个级别有时候也叫“不可重复读(non-repeatable read)”,因为两次执行同样的查询,可能会得到不一样的结果。 REPEATABLE-READ(可重复读) 在这个级别,保证了在同一个事务中多次读取统一记录的结果是一致的。MySQL默认使用这个级别。InnoDB和XtraDB存储引擎通过多版本并发控制MVCC(multiversion concurrency control)解决了“幻读”和“不可重复读”的问题。通过前面的学习我们知道RR级别总是读取事务开始那一刻的快照信息,也就是说这些数据数据库当前状态,这在一些对于数据的时效特别敏感的业务中,就很可能会出问题。 SERIALIZABLE(串行化) 在这个级别,它通过强制事务串行执行,避免了前面说的一系列问题。简单来说,SERIALIZABLE会在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。实际应用中也很少在本地事务中使用SERIALIABLE隔离级别,主要应用在InnoDB存储引擎的分布式事务中。 4)MongoDB对持久性(durability)的支持 对于数据持久性来说,在传统数据库中(单机)的表现为服务器任何时候发生宕机都不需要担心数据丢失的问题,因为有方式可以把数据永久保存起来了。一般都是通过日志来保证数据的持久性。通过下图来看一下传统数据库跟MongoDB对于数据持久性各自所使用的方式。 MongoDB是如何实现事务的ACID? 从上图可以看出,MongoDB同样是使用数据进来先写日志(日志刷盘的速度是非常快)然后在写入到数据库中的这种方式来保证数据的持久性,如果出现服务器宕机,当启动服务器时会从日志中读取数据。不同的是传统数据库这种方式叫做“WAL” Write-Ahead Logging(预写日志系统),而MongoDB叫做“journal”。此外MongoDB在数据持久性上这点可能做的更好,MongoDB的复制默认节点就是三节点以上的复制集群,当数据到达主节点之后会马上同步到从节点上去。

景凌凯 2019-12-02 02:05:12 0 浏览量 回答数 0

回答

我自己没配环境,用的云市场的wordpress博客镜像,这种问题又不是一天一次,是几天十几天个把月甚至不知道间隔多久时间无规律地出现一次,论坛里一搜一大把,好多这问题,我同一台ECS,装了一个wordpress和一个discuz,discuz则从来不会出现这种情况,discuz比WordPress的缓存功能发达,对数据库操作次数较小,都是wordpress不定时挂掉,重启下服务器就好了 ------------------------- 回 1楼(ivmmff) 的帖子 反正这次阿里云ECS初始配置磁盘从20G提升到40G以来,我的wordpress一直都没再出现数据库连接错误,我看这次多久会再出现,如果一年都不再出现,就几乎可以肯定阿里云优化了磁盘并发连接数,因为之前wordpress最长是一两个月就会出现一次数据库连接错误 ------------------------- 回 9楼(碧血微剑) 的帖子 稳定是王道啊,真心希望阿里云能多从稳定角度考虑 ------------------------- 回 11楼(ivmmff) 的帖子 应该不是,以前就算新装wordpress都有一定几率出现数据库连接错误,但现在应该成为过去式了,我觉得阿里云肯定优化过了,因为不管怎么说,新装的wordpress什么插件都没用,访问量也就站长自己,怎么也不应该出现这种影响稳定性的问题,而且一旦数据库连接错误,如果不手动重启相关服务,网站就基本死了,所以以前我经常担心哪一天就出现访问不了的问题 但这次我亲身经历了出现数据库连接错误,大概不到10秒,就给自动恢复了,不需要站长手动重启相关服务,也就不必担心网站会挂掉了 ------------------------- 回 13楼(ivmmff) 的帖子 全站缓存我没用,就是有个opcache缓存(镜像自带的),因为全站缓存会影响登录站点用户使用,所以还是动态为好,如果没有开放站内注册,是可以用全站缓存,网页全部缓存成静态页面 其实缓不缓存是站长自己的事,但wordpress默认是没有缓存的,而且缓存不适合那些开放注册的wordpress站点,所以阿里云针对wordpress优化,避免网站数据库挂掉,是非常必要的,现在我省很多心了,不用担心网站哪天挂掉 ------------------------- 回 15楼(ivmmff) 的帖子 暂时还稳定,访问的人数很平均,一般是1-2分钟来一个访客,同时在线的人数很少很少 我觉得现在稳定性比较放心了 ------------------------- 回 17楼(ivmmff) 的帖子 wordpress已经又稳定运行几个月了,看来网站是比较稳定了,不会再出现数据库挂掉的情况,目前考虑ECS续费时选择包年(包年有打折优惠,之前一直担心不稳定所以没有选择包年,而是一个月一个月续费,看现在这个态势,ECS是非常稳定了,所以打算包年省点钱) ------------------------- 回 20楼(ivmmff) 的帖子 mysql不是自己就有缓存机制吗,wordpress还有缓存数据库方面的插件或方法吗 ------------------------- 回 22楼(ivmmff) 的帖子 貌似都是静态化缓存,对我用处不大,因为我网站是需要登录会员的,需要动态内容,要是能缓存动态内容就好了 ------------------------- 回 24楼(ivmmff) 的帖子 wordpress和discuz都有,不过主要是wordpress速度相对慢很多,主要是想给wordpress加速 ------------------------- 出现数据库连接错误必须手动重启服务器或重启数据库服务,否则网站一直处于无法访问的状态,今天早上的用户全部流失了,还期待早上起来有没有人在网站上付款了(我开通了支付宝即时到账,网站会员可以打款给我阅读博客),结果没看到旺旺有消息有人付款,再一打开网站,网站数据库连接错误,访问不了了,重启数据库才又正常,损失了大概7小时的用户访问 ------------------------- 回 29楼(ivmmff) 的帖子 解决了,是我wordpress一个插件的问题,现在ECS速度还是很不错的,我说嘛,半年了都没问题,最近怎么会突然出现问题呢,原来是我一个插件的BUG,解决就不会再出现网站越来越慢直到卡死,现在网站速度相当稳定

一如繁星 2019-12-02 02:04:07 0 浏览量 回答数 0

问题

如何保证缓存与数据库的双写一致性?【Java问答】38期

剑曼红尘 2020-06-16 12:58:57 36 浏览量 回答数 1

回答

Re迁移出现这个错误怎么解决grantreloadontordsperf 授权下就可以了,我也遇到这个问题了,阿里云官方文档有解决办法,执行完这些命令就好了 数据迁移至RDS-MySQL之利用RDS管理控制台 该方法是一种MySQL的在线迁移方法,可以不停服务就能够完成数据库的迁移工作,支持MySQL 5.1、5.5、5.6(5.0版本只支持全量迁移)的迁移。更多迁移信息可参考:如何快速平稳的迁入RDS>> 迁移注意事项 1)MySQL的系统库将不允许迁移至RDS,不允许迁移的数据库包括:mysql,information_schema,perfermance_schema。这些数据库将不会显示在迁移列表中; 2)不支持迁移存储过程和函数,如果待迁移的库中存在存储过程和函数,将忽略掉不迁移; 3)自建数据库必须与RDS实例中的数据库同名。否则,自建数据库为“暂不可迁移”状态; 4)自建库迁移账号密码不允许含有%¥#!等特殊字符; 5)迁移中禁止使用DDL操作例如:创建表、删除表、修改索引等操作; 6) 自建数据库的视图(view)无法迁移到RDS,需要您重新创建的。 迁移步骤 1)在自建数据库中创建迁移账号 命令格式: grant all privileges on DB.* to 'userName'@'%' identified by 'password'; MySQL数据迁移 说明:a) userName:MySQL数据库账号;b) password: MySQL数据库账号的密码。 2)设置迁移账号权限 命令格式: grant super,process,select,reload,lock tables,replication slave,replication client ON *.* TO 'userName'@'%'; MySQL数据迁移 说明:该命令对数据库账号userName赋予super、process、select、reload、lock tables、replication slave、replication client权限。 3)确认自建数据库中配置文件正确 确认MySQL配置文件my.cnf有如下设置项: MySQL数据迁移 说明: a) 开启二进制日志,log_bin=mysql-bin; b) 设置binlog格式为“ROW”模式,binlog_format=ROW; c) server_id要大于1,如server_id=2; d)修改完成后,重启MySQL进程。 4)登录自建数据库,通过命令查看是否为“ROW”模式 执行命令: show variables like ‘binlog_format%’; MySQL数据迁移 5)将数据迁移至RDS 在RDS管理控制台对应的实例页面,点击“将数据迁移至RDS”按钮,在弹出框中填写待迁移的数据库连接地址、数据库连接端口、数据库账号、数据库密码,如下图所示: 注意下:如果您的表是myisam引擎,无论下图是否选择锁表,迁移过程中都会锁表,下个版本我们会提供myisam不锁表的支持。 MySQL数据迁移

macroyan 2019-12-02 01:52:24 0 浏览量 回答数 0

回答

<p>MySQL端自动把连接池的连接给关了吧。</p> 刚才我在网上搜了一下说是,mysql中的wait_timeout连接超过一定的时间将会关闭,是这个原因吗?但是我的程序也就跑了一会呀,wait_timeout默认不是八小时吗 那该如何处理呢 <p>你查一下数据库的wait_timeout参数,看是多少。这个参数是可以修改的,没准有人改了呢!</p> 解决办法两个,一个是缩小你的数据库连接生存周期,早点回收( maxIdleTime )。另一个是定时跑一个激活SQL,让数据库连接永远活着。这两个办法网上的解决说明很多。 回复 <a class="referer" target="_blank">@Andyagg</a> : 因为连接池是连接池,数据库是数据库。数据库销毁了,但没有通知连接池。在这里,数据库是单方面操作,连接池不知道也没法知道。 回复 <a class="referer" target="_blank">@魔力猫</a> : 我刚才一直在思考你说的数据库连接池提供的连接是随机的,有用过的有启动后一直没用过的,那个一直没用的失效的为什么数据库不把他给销毁掉还要提供,如果这样的话,那岂不是连接池中一直存在失效的,然后随机提供给使用者,还会出错呀 回复 <a class="referer" target="_blank">@魔力猫</a> : 嗯嗯,多谢,这样说的话,就理解了,那我的wait_timeout=86400(24小时),maxIdleTime=119,我估计很可能就是119这里出问题了,因为我的定时时间是五分钟,大于空余时间 回复 <a class="referer" target="_blank">@Andyagg</a> : 数据库连接池提供给你的连接是随机的。也许是之前用过的,也许是程序启动后从来没有用过的。刚启动的时候,肯定都是有效的。但是如果有某个一直没用,失效了,却在后来被提供给你,就报错了。 嗯嗯。多谢 我试试你说的办法,但是现在我有些疑问,就是说我的程序是跑的过程中才出现的异常,(即操作过几次数据库了),定时任务是每隔五分钟,按说这样的话,不应该出现mysql自动断开吧,因为前面几次操作数据库都能正常操作呀,如果说是wait_timeout参数的话,前面几次正常的操作是怎么回事呢?还有就是接下来程序还能继续跑,这个是什么情况

爱吃鱼的程序员 2020-06-07 16:42:35 0 浏览量 回答数 0

回答

今天怎么就配置不起来,PHP配置上就提示在页面上提示 Service Unavailable,自然,ASP也不能正常运行了,后来在IIS中检查PHP的配置,发现php5isapi.dll没有被ISAPI筛选器正常加载,是红色的向下的箭头,正常情况应该是绿色向上的箭头,表示加载成功!于是将其删除后重新启动IIS,结果页面显示正常!于是重新检查PHP的配置,也没有发现什么异常现象,最后想到了有可能是权限问题,于是检查PHP安装文件夹的权限,发现没有EVERYONE权限,不知什么时候把EVERYONE权限给删除了,于是从新给EVERYONE加上了只读权限(只读权限就足够了),重启IIS后,一切正常关于网站出现Service Unavailable的说明原因一:网站超过了IIS连接数解决办法一:增加IIS连接数备注一:Windows 2003的操作系统在提示IIS过多时并非像win2000系统提示“链接人数过多”,而是提示”Service Unavailable”原因二:网站超过了IIS资源限制解决办法二:增加网站的资源备注二:Winodws2003中网站占用了超过IIS对该网站系统资源的限制后直接提示”Service Unavailable”原因三:网站的程序发生太多的错误解决办法三:修改程序错误备注三:Winodws2003中网站错误太多,就会造成该网站所在的应用程序池出错,这个时候可以在Windows2003的日志中看到“应用程序池 ‘xxx’ 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误”,这个时候网站就会直接显示”Service Unavailable”以上三个原因造成的”Service Unavailable”,一般现象是出现”Service Unavailable”后,多刷新几次,就可以打开。原因四:ACCESS引擎错误解决办法四:重启IIS备注四:有一些文件造成了ACCESS数据库出现“灾难性故障”及“未将对象引用设置到对象的实例”的错误原因四造成的”Service Unavailable”,现象是所有该服务器上的使用Access数据库的网站都出现错误,不能访问。以上四个原因是常见的造成了”Service Unavailable”的原因,其他还有一些问题造成了该问题,基本只要IIS重启一下就可以的。有时是IIS6.0的应用池限制,在IIS管理中可以看到应用池管理,点属性,限制内存大小使应池自动回收。这样平衡服务器资源,就不会出现“Service Unavailable

我的中国 2019-12-02 01:33:20 0 浏览量 回答数 0

问题

你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?【Java问答】44期

剑曼红尘 2020-06-24 08:34:06 8 浏览量 回答数 1

问题

2018MySQL技术问答集锦,希望能给喜欢MySQL的同学一些帮助

技术小能手 2019-12-01 19:31:11 1856 浏览量 回答数 0

回答

Reslb两台阿里云服务器如何设置phpwind87 建议不要用rsync 那个只适合定时同步数据 不适合实时同步数据 rsync我一般只用在静态数据上 论坛上有些是服务器单属的 比如访问日志 还有一些临时页面 不是简单同步 建议使用NFS 用一台服务器的数据盘创建NFS 然后另一台挂在NFS来解决 不过NFS不支持mysql mysql的表锁机制会与NFS产生冲突 建议另外购置RDS来解决这个问题 如果不想通过RDS解决问题的话就在一台机器上设置上mysql 然后开放远程访问 另一台也设置为访问那台数据即可 不过要做好配置只对内网开放 ------------------------- 回 17楼(雨中听风) 的帖子 对 NFS就是类似于windows之间磁盘共享 多台服务器访问同一磁盘 所以网站文件什么的也都是共享的 就不需要走nginx反向代理了 NFS从基础上就不支持mysql的数据库文件 NFS无法满足mysql执行文件锁定时的操作 最好是在一台主机上设置mysql然后把另一台主机的数据库地址指向那台机器 或者直接使用RDS ------------------------- 回 17楼(雨中听风) 的帖子 阿里云所有主机间相互的通讯都是可以走内网的 只要将目标地址设定为内网的IP即可 同时要在相关软件中设置来保证端口以及权限开放 ------------------------- 回 20楼(雨中听风) 的帖子 那些都不用设置 因为无论那台服务上传附件 都是上传到同一个位置 所以A上传的附件B也可以访问到的 镜像配置貌似是给一些外部存储网站做的 有些网站可以用来存附件 忘了怎么叫那些网站了…… NFS这些同步的问题你就都不需要管了 你可以想象成同样的数据同时被两台服务器访问 同时任何一台对数据所做的更改也会被另一台读取到 ------------------------- 回 22楼(雨中听风) 的帖子 http://www.vpsee.com/2010/06/install-nfs-4-0-on-centos/ 你参考一下这个教程  用yum装很简单的 ------------------------- 回 24楼(雨中听风) 的帖子 客气哈~ 以后会慢慢收集论坛问题然后专门出一个教程帖子来教大家使用云服务器的~ nfs算是用的比较广的网络文件系统 稳定性易用性还是有保障的 rsync主要问题是在他是定时同步 对静态内容同步比较好 但是对于论坛这种会产生大量临时文件以及上传文件的来说局限性比较大 建议开启SLB的保持连接 要不可能论坛会出现session丢失的问题 如果都弄完之后还会出现session丢失的情况在论坛反馈一下 估计可能还需要修改php保存session的文件夹位置 修改到nfs盘 ------------------------- 回 24楼(雨中听风) 的帖子 不知道phpwind的session用的php的还是像dz那样写入session到数据库 如果开启SLB的话还会出现session丢失的问题 就在nfs盘中新建一个session文件夹  同时修改两台服务器的/etc/php.ini文件将session临时存储位置指向新建文件夹即可 ------------------------- 回 29楼(雨中听风) 的帖子 你可以把你的服务器ip 密码发敌人消息发给我 我帮你配置一下

twl007 2019-12-02 00:46:34 0 浏览量 回答数 0

回答

mysql很少用。我一般都是postgresql。pgsql对这一块做的相当好。######回复 @tianxiameng.com : 也不是表设计了,就是asp.net 的拖放控件的支持程度。c#支持pg是没问题的。######回复 @bastetwang : 这个我还真的没有试过。我一般都是直接用pgadmin来进行操作的。######pgsql不知道能不能直接在vs的ide里进行设计,mysql是可以的(虽然有些地方支持得不太好)######回复 @范红振 : 当然没有任何问题的了。######postgresql windows 下 和 asp.net 结合怎么样??######你的解决思路有问题, 几分钟同步一次做什么, 这不是降低负载而是容易导致出更多问题, 这需求摆明了就该上单写入的主主######你需要有“原子”概念。因此你目前的系统,不能保证近10分钟,或2小时的数据在备份服务器上存在。一个解决方案就是多缓冲的方式。降低上述“原子”时间片的大小。 ######mysql是做主从增量备份。 ######http://blog.csdn.net/libraworm/article/details/1703365 ######他是增量备份的。 ######每次数据来了同时写入两个数据库就行了吧。。。。。。。。。。 ######如果出现 一台写入成功一台失败,那就不行了######建议你使用数据库实时复制同步工具 也就是容灾 最简单的拷贝方法,费时费力,而且占用很大网速资源。并且不是实时备份的。你的问题就在这里!不能实时备份! 比如:翱旗创业公司的R7产品 专业做这数据交付、共享、复制、同步、容灾。 是这样,它可以为你制成备用系统,也可以有助理系统。 还有数据物流的功能,也就是集中和分发。 也就是说你的生产系统有任何数据的变化,R7会实时传送到你另一台备用系统上面。并且是大范围的广域网。 其实这是已经一种专业领域 为了减少损失与更好的完成所有机器的运作 你应该实用这个 如果你的公司是存在数据实时备份的安全隐患,希望你能尽早使用。望采纳! 对了,这个R7可以针对在不同的数据库之间为你工作实时复制同步,在ORACLE、SQL、mysqi、IBM都可以!你也不用没两个小时怎么怎么样,它是实时的。这点是最重要的哦。

爱吃鱼的程序员 2020-06-03 20:50:31 0 浏览量 回答数 0

回答

Re安装PHPWIND出现的问题请高手解围谢谢 无法安装下去啊!请教阿! ------------------------- Re安装PHPWIND出现的问题请高手解围谢谢 密码和用户名都安照ACCOUNT文件中填写! ------------------------- 回3楼dongshan8的帖子 我确定阿,我试了好几次,去打开这个文件,里面显示的就是mysql_password,不过我也觉得奇怪,但道理应该是数字十么的吧. ------------------------- Re一件配置就出问题太差了安装PHPWIND出现的问题请高手解围谢谢 ------------------------- Re一件配置就出问题太差了安装PHPWIND出现的问题请高手解围谢谢 安装过程中好多错误,怎么那么差的产品! ------------------------- Re一件配置就出问题太差了安装PHPWIND出现的问题请高手解围谢谢 都没有解决问题的人! ------------------------- 回8楼51干警网的帖子 你好,没有短信提醒,而且我按操作说明安装,也没有说要自己输入数据库密码的.而且我现在又重新安装,出现很多问题.

天空的蓝 2019-12-01 23:22:59 0 浏览量 回答数 0

回答

你说的这种是并发量特别大吗?如果只是cache失效并发量不大,那很简单,query db -> put to cache就可以了,这样后续请求又被cache拦掉了,如果是瞬间请求很大,我们可以看一下,如服务器/容器 处理的线程数是多少,然后rt是多少,然后算出db tps/qps是多少,如果并不大,那很有可能是你数据库本身就设计的有问题,如果很大, 那么需要将cache的逻辑和db的逻辑切开,缓存更新异步化,所有请求都直接读cache,不读db就可以了,不过这会稍微有点复杂的,你需要考虑很多额外情况。######没人看吗- -######如果怕db压力大的话感觉可以在缓存不存在的时候加同步代码(再判断-读db或读cache)。同步的话不知道作为一个商业应用是不是太奢侈了,感觉延时应该不大。如果缓存不存在的话耗时就是读db的时间,对于进入第一个无缓存条件请求的响应时间是前一个读db+读cache。对于你说的情景在缓存失效时大量并发访问的话可以减小数据库压力的。######缓存时效错开######二级cache######能否在缓存失效操作时,取得最新数据再刷新缓存 如果数据库操作该同步串行操作的话可能会降低伸缩性######1. 控制失效时间,避免同时失效。比如写入时,过期时间在一个范围内随机     ---当然了,这样避免不了redis down机所造成的同时失效(避免down机又是怎么高可用的问题了) 2. 常规的缓存更新,可以加锁。 简单来说,就是当读取缓存失败需要去db读取时,通过加锁保证只有一个请求去db进行读取和更新,其它的请求可以直接返回或等待。 --这种加锁,解决的是某个key失效后,大量请求都同时读取该key的情况(比如全局的计数之类)。如果是上面提到的donw机的场景,那已经是一场”雪崩“了,就要根椐实际场景来操作了。。。 所以,如果是预案,既然是缓存,就要想尽办法,避免整体失效(因为一旦整体失效,而db又无法承受大量请求的话,则只能是降级服务了)######谢谢######用两个键值对的缓存代替之前的一个,将缓存时间( key-time),和缓存数据( key-data )分离 1.当缓存过期时,第一个线程发现 key-time 没有,则先更新 key-time, 2.然后去查询数据库(或任何比较耗时的数据查询方式),并更新 key-data 的值, 3.当后续线程来获取数据时,虽然第一个还没有从数据库查完并更新缓存,但发现 key-time 存在,会获取旧的数据。######回复 @东方游 : 存在以下几个问题: 1.你用标识的话可能会出现一直等待的问题。 2.其他线程你要设置等待多久合适?对不同的访问设置不同的等待时间?######现在想到的方案是如果缓存没有查询到,就向redis中存入一条标识,再进行查库,查库完成之后放到缓存并删除标识,出现大量请求时先去缓存中查询标识,如果查询到标识说明已经在进行数据库查询,这时便进行等待几百毫秒或者几秒,再进行查询 ,不知道这样是否可行######redis缓存存的哪方面的数据。######回复 @mickelfeng : 我题目的意思是缓存到期失效了,然后同时会有大量的请求查询干到数据库中,比如1000个相同的查询同时过来,数据库压力增大,现在是不相给数据库增加压力,又让缓存重新生效######变动很少的话不存在。######redis缓存过期了。一个请求query+cache,以后请求cache,不存在你说的问题######就是查询的数据列表######如果访问量真的到缓存实效都有大量连接同时进来,可以考虑使用redis当数据库用,数据做持久化存储用了。 redis要用备份服务,以确保主服务挂了,备服务提供只读模式降级服务。

kun坤 2020-05-30 22:57:52 0 浏览量 回答数 0

回答

一、基础篇 1.1、Java基础 面向对象的特征:继承、封装和多态 final, finally, finalize 的区别 Exception、Error、运行时异常与一般异常有何异同 请写出5种常见到的runtime exception int 和 Integer 有什么区别,Integer的值缓存范围 包装类,装箱和拆箱 String、StringBuilder、StringBuffer 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP请求的GET与POST方式的区别 Session与Cookie区别 列出自己常用的JDK包 MVC设计思想 equals与==的区别 hashCode和equals方法的区别与联系 什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用 Object类中常见的方法,为什么wait notify会放在Object里边? Java的平台无关性如何体现出来的 JDK和JRE的区别 Java 8有哪些新特性 1.2、Java常见集合 List 和 Set 区别 Set和hashCode以及equals方法的联系 List 和 Map 区别 Arraylist 与 LinkedList 区别 ArrayList 与 Vector 区别 HashMap 和 Hashtable 的区别 HashSet 和 HashMap 区别 HashMap 和 ConcurrentHashMap 的区别 HashMap 的工作原理及代码实现,什么时候用到红黑树 多线程情况下HashMap死循环的问题 HashMap出现Hash DOS攻击的问题 ConcurrentHashMap 的工作原理及代码实现,如何统计所有的元素个数 手写简单的HashMap 看过那些Java集合类的源码 1.3、进程和线程 线程和进程的概念、并行和并发的概念 创建线程的方式及实现 进程间通信的方式 说说 CountDownLatch、CyclicBarrier 原理和区别 说说 Semaphore 原理 说说 Exchanger 原理 ThreadLocal 原理分析,ThreadLocal为什么会出现OOM,出现的深层次原理 讲讲线程池的实现原理 线程池的几种实现方式 线程的生命周期,状态是如何转移的 可参考:《Java多线程编程核心技术》 1.4、锁机制 说说线程安全问题,什么是线程安全,如何保证线程安全 重入锁的概念,重入锁为什么可以防止死锁 产生死锁的四个条件(互斥、请求与保持、不剥夺、循环等待) 如何检查死锁(通过jConsole检查死锁) volatile 实现原理(禁止指令重排、刷新内存) synchronized 实现原理(对象监视器) synchronized 与 lock 的区别 AQS同步队列 CAS无锁的概念、乐观锁和悲观锁 常见的原子操作类 什么是ABA问题,出现ABA问题JDK是如何解决的 乐观锁的业务场景及实现方式 Java 8并法包下常见的并发类 偏向锁、轻量级锁、重量级锁、自旋锁的概念 可参考:《Java多线程编程核心技术》 1.5、JVM JVM运行时内存区域划分 内存溢出OOM和堆栈溢出SOE的示例及原因、如何排查与解决 如何判断对象是否可以回收或存活 常见的GC回收算法及其含义 常见的JVM性能监控和故障处理工具类:jps、jstat、jmap、jinfo、jconsole等 JVM如何设置参数 JVM性能调优 类加载器、双亲委派模型、一个类的生命周期、类是如何加载到JVM中的 类加载的过程:加载、验证、准备、解析、初始化 强引用、软引用、弱引用、虚引用 Java内存模型JMM 1.6、设计模式 常见的设计模式 设计模式的的六大原则及其含义 常见的单例模式以及各种实现方式的优缺点,哪一种最好,手写常见的单利模式 设计模式在实际场景中的应用 Spring中用到了哪些设计模式 MyBatis中用到了哪些设计模式 你项目中有使用哪些设计模式 说说常用开源框架中设计模式使用分析 动态代理很重要!!! 1.7、数据结构 树(二叉查找树、平衡二叉树、红黑树、B树、B+树) 深度有限算法、广度优先算法 克鲁斯卡尔算法、普林母算法、迪克拉斯算法 什么是一致性Hash及其原理、Hash环问题 常见的排序算法和查找算法:快排、折半查找、堆排序等 1.8、网络/IO基础 BIO、NIO、AIO的概念 什么是长连接和短连接 Http1.0和2.0相比有什么区别,可参考《Http 2.0》 Https的基本概念 三次握手和四次挥手、为什么挥手需要四次 从游览器中输入URL到页面加载的发生了什么?可参考《从输入URL到页面加载发生了什么》 二、数据存储和消息队列 2.1、数据库 MySQL 索引使用的注意事项 DDL、DML、DCL分别指什么 explain命令 left join,right join,inner join 数据库事物ACID(原子性、一致性、隔离性、持久性) 事物的隔离级别(读未提交、读以提交、可重复读、可序列化读) 脏读、幻读、不可重复读 数据库的几大范式 数据库常见的命令 说说分库与分表设计 分库与分表带来的分布式困境与应对之策(如何解决分布式下的分库分表,全局表?) 说说 SQL 优化之道 MySQL遇到的死锁问题、如何排查与解决 存储引擎的 InnoDB与MyISAM区别,优缺点,使用场景 索引类别(B+树索引、全文索引、哈希索引)、索引的原理 什么是自适应哈希索引(AHI) 为什么要用 B+tree作为MySQL索引的数据结构 聚集索引与非聚集索引的区别 遇到过索引失效的情况没,什么时候可能会出现,如何解决 limit 20000 加载很慢怎么解决 如何选择合适的分布式主键方案 选择合适的数据存储方案 常见的几种分布式ID的设计方案 常见的数据库优化方案,在你的项目中数据库如何进行优化的 2.2、Redis Redis 有哪些数据类型,可参考《Redis常见的5种不同的数据类型详解》 Redis 内部结构 Redis 使用场景 Redis 持久化机制,可参考《使用快照和AOF将Redis数据持久化到硬盘中》 Redis 集群方案与实现 Redis 为什么是单线程的? 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级 使用缓存的合理性问题 Redis常见的回收策略 2.3、消息队列 消息队列的使用场景 消息的重发补偿解决思路 消息的幂等性解决思路 消息的堆积解决思路 自己如何实现消息队列 如何保证消息的有序性 三、开源框架和容器 3.1、SSM/Servlet Servlet的生命周期 转发与重定向的区别 BeanFactory 和 ApplicationContext 有什么区别 Spring Bean 的生命周期 Spring IOC 如何实现 Spring中Bean的作用域,默认的是哪一个 说说 Spring AOP、Spring AOP 实现原理 动态代理(CGLib 与 JDK)、优缺点、性能对比、如何选择 Spring 事务实现方式、事务的传播机制、默认的事务类别 Spring 事务底层原理 Spring事务失效(事务嵌套),JDK动态代理给Spring事务埋下的坑,可参考《JDK动态代理给Spring事务埋下的坑!》 如何自定义注解实现功能 Spring MVC 运行流程 Spring MVC 启动流程 Spring 的单例实现原理 Spring 框架中用到了哪些设计模式 Spring 其他产品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等) 有没有用到Spring Boot,Spring Boot的认识、原理 MyBatis的原理 可参考《为什么会有Spring》 可参考《为什么会有Spring AOP》 3.2、Netty 为什么选择 Netty 说说业务中,Netty 的使用场景 原生的 NIO 在 JDK 1.7 版本存在 epoll bug 什么是TCP 粘包/拆包 TCP粘包/拆包的解决办法 Netty 线程模型 说说 Netty 的零拷贝 Netty 内部执行流程 Netty 重连实现 3.3、Tomcat Tomcat的基础架构(Server、Service、Connector、Container) Tomcat如何加载Servlet的 Pipeline-Valve机制 可参考:《四张图带你了解Tomcat系统架构!》 四、分布式 4.1、Nginx 请解释什么是C10K问题或者知道什么是C10K问题吗? Nginx简介,可参考《Nginx简介》 正向代理和反向代理. Nginx几种常见的负载均衡策略 Nginx服务器上的Master和Worker进程分别是什么 使用“反向代理服务器”的优点是什么? 4.2、分布式其他 谈谈业务中使用分布式的场景 Session 分布式方案 Session 分布式处理 分布式锁的应用场景、分布式锁的产生原因、基本概念 分布是锁的常见解决方案 分布式事务的常见解决方案 集群与负载均衡的算法与实现 说说分库与分表设计,可参考《数据库分库分表策略的具体实现方案》 分库与分表带来的分布式困境与应对之策 4.3、Dubbo 什么是Dubbo,可参考《Dubbo入门》 什么是RPC、如何实现RPC、RPC 的实现原理,可参考《基于HTTP的RPC实现》 Dubbo中的SPI是什么概念 Dubbo的基本原理、执行流程 五、微服务 5.1、微服务 前后端分离是如何做的? 微服务哪些框架 Spring Could的常见组件有哪些?可参考《Spring Cloud概述》 领域驱动有了解吗?什么是领域驱动模型?充血模型、贫血模型 JWT有了解吗,什么是JWT,可参考《前后端分离利器之JWT》 你怎么理解 RESTful 说说如何设计一个良好的 API 如何理解 RESTful API 的幂等性 如何保证接口的幂等性 说说 CAP 定理、BASE 理论 怎么考虑数据一致性问题 说说最终一致性的实现方案 微服务的优缺点,可参考《微服务批判》 微服务与 SOA 的区别 如何拆分服务、水平分割、垂直分割 如何应对微服务的链式调用异常 如何快速追踪与定位问题 如何保证微服务的安全、认证 5.2、安全问题 如何防范常见的Web攻击、如何方式SQL注入 服务端通信安全攻防 HTTPS原理剖析、降级攻击、HTTP与HTTPS的对比 5.3、性能优化 性能指标有哪些 如何发现性能瓶颈 性能调优的常见手段 说说你在项目中如何进行性能调优 六、其他 6.1、设计能力 说说你在项目中使用过的UML图 你如何考虑组件化、服务化、系统拆分 秒杀场景如何设计 可参考:《秒杀系统的技术挑战、应对策略以及架构设计总结一二!》 6.2、业务工程 说说你的开发流程、如何进行自动化部署的 你和团队是如何沟通的 你如何进行代码评审 说说你对技术与业务的理解 说说你在项目中遇到感觉最难Bug,是如何解决的 介绍一下工作中的一个你认为最有价值的项目,以及在这个过程中的角色、解决的问题、你觉得你们项目还有哪些不足的地方 6.3、软实力 说说你的优缺点、亮点 说说你最近在看什么书、什么博客、在研究什么新技术、再看那些开源项目的源代码 说说你觉得最有意义的技术书籍 工作之余做什么事情、平时是如何学习的,怎样提升自己的能力 说说个人发展方向方面的思考 说说你认为的服务端开发工程师应该具备哪些能力 说说你认为的架构师是什么样的,架构师主要做什么 如何看待加班的问题

徐刘根 2020-03-31 11:22:08 0 浏览量 回答数 0

回答

http://docs.mongoing.com/manual-zh/tutorial/perform-two-phase-commits.html要么操作全都执行,要么都不执行,不能执行一半,改了几条数据了,看哎哟好像不对,那扔着吧。Consistency 在数据库领域的意思跟在分布式系统里的意思不一样,指数据的外部约束有没有满足,比如帐户之间转账,不能最后总和还是负数,或者超过原来的总和了。那文档中的办法是怎么做的呢?简单说,就是在执行操作之前,记下来要做什么,以后可以 redo。然后保证每个操作都是 幂等的 ,就是说重复执行也没事。比如,赋值是幂等的,但是加一个数就不是幂等的。利用 MongoDB 提供的单文档的原子性,使用一些辅助的数据做到幂等,最后把辅助的数据清除掉。如果你的操作本身就是幂等的,那就不需要辅助数据了。如果要 undo,也是可能的,那就要记下如何 undo。但是 ACID 中的 Isolation 是没有的,也就是说事务之间有交叉,别的并发操作可以看到中间不一致的状态,上面说的外部约束只能最终得到保证。比如说,事务 T1 包括 (张三:加100;李四:减100),事务 T2 包括 (张三:加200;李四:减200),如果不加以限制,可能的顺序是:1.T1 (张三:加100)2.T2 (张三:加200)3.T2 (李四:减200)4.T1 (李四:减100)T2 执行的时候可以读取并修改 T1 的中间结果,在转账这个问题上没有大问题,因为加减是 可交换 的操作,先后不影响最终结果。但是如果我们把事务改成 T1 (张三 = 100;李四 = 100)和T2 (张三 = 200;李四 = 200) 这样最终的结果就可能是 (张三 = 200;李四 = 100),有可能就不满足一致性了。但是如果能在应用里保证顺序地执行这两个事务,问题就避免了。大家也了解 Isolation 有几个级别,还有多版本等更复杂的。传统数据库在单机上也会在更强的 Isolation 和性能之间做权衡,提供不同的级别可选。这一点在分布式系统中被称作 Consistency,实现起来的代价就更高了,所以 MongoDB 不支持。不过对大多应用,这并不是太大的问题:1.可能异常情况在逻辑上也是可以接受的,比如微信群发,每个人收到的顺序并不一样。2.可能逻辑上并发就是不可能的,比如一个用户只能修改自己的数据,比如只有一个线程写数据。3.或者把需要的数据放到一个文档里,对单文档,MongoDB 保证原子性,别的操作也不可能看到文档一半被改了。4.或者可以在应用上层发现并解决。比如支付宝转账就自己实现了一套一致性协议,1分钟之内可以保证这一笔数据一致了。对你的要求,如果可以通过修改数据模型,让改动在一个文档里就方便了。最好是看看你具体的需要和应用的假设,分析分析可能出现的异常情况,最后想办法。还有一个办法,贵司可以购买 MongoDB 的支持服务,针对你现在的产品阶段和需求 (开发,维护,咨询,培训),提供不同类型的专业级支持,比再请个程序员 / DevOp / DBA 便宜靠谱多了。

蛮大人123 2019-12-02 01:49:07 0 浏览量 回答数 0

回答

请参见我的cf学习笔记,看看能不能对你有所帮助 http://my.oschina.net/kzhou/blog/99134 ######回复 @曹波 : 多交流、相互学习######嗯,很有帮助啊,原来我通过service通道获取的那个mysql的用户名跟密码不对啊,那个应该是用于连接数据库建表所用到的用户名跟密码吧?跟程序中用的不一样,用你的那个jsp页面获取的那个才是正确的,谢谢了,问题解决了。######贴的代码无法确定...######工程里就这些代码啊?前者是放在jsp页面中的,后者是直接在一个java类中执行的。但是在jsp页面中的那个出现问题。###### 因为你的url pwd name写死了……是要获取动态的,虽然你创建service复制下来的是这些数据。 JSONObject credentials = new JSONObject(VCAP_SERVICES)  .getJSONArray("mysql-5.1").getJSONObject(0).getJSONObject("credentials"); ######原来CF给的mysql可以有两个用户名跟密码啊。问题解决了,谢谢######你的意思是用户名跟密码是动态分配的?我试了好几次都是一样的啊。而且为什么直接在java代码中执行没问题呢。但是在jsp页面中执行就不行呢。你上面写得那个JSONObject是获取什么的?VCAP_SERVICES这个变量又是哪儿来的啊?######要获取他们的DS######怎么获取啊?能举个例子吗?###### RdbmsServiceInfo mysql = new CloudEnvironment().getServiceInfo("lewole", RdbmsServiceInfo.class); RdbmsServiceCreator ds = new RdbmsServiceCreator(); dataSource = ds.createService(mysql);######谢谢###### 用VCAP_SERVICES参数得到的连接信息用Navicat for mysql连接不上,当open Tunnel mysql时得到的信息能连接还能操作数据库。数据源要选择哪个?是用用VCAP_SERVICES参数得到的吗?######嗯,另一个只是方便让你操作数据库。

kun坤 2020-05-29 23:24:36 0 浏览量 回答数 0

回答

大小写?###### 引用来自“sxgkwei”的答案 大小写? 没问题吧 ######别写端口搞下嘛###### 引用来自“空云万里晴”的答案 引用来自“sxgkwei”的答案 大小写? 没问题吧 呵呵,解决了! 也不知道怎么回事,现在能连上了 还是感谢你!thank you! ###### 引用来自“空云万里晴”的答案 引用来自“空云万里晴”的答案 引用来自“sxgkwei”的答案 大小写? 没问题吧 呵呵,解决了! 也不知道怎么回事,现在能连上了 还是感谢你!thank you! 还有怎么在创建table? 如下图: ###### 引用来自“空云万里晴”的答案 引用来自“空云万里晴”的答案 引用来自“空云万里晴”的答案 引用来自“sxgkwei”的答案 大小写? 没问题吧 呵呵,解决了! 也不知道怎么回事,现在能连上了 还是感谢你!thank you! 还有怎么在创建table? 如下图: 创建出现如下对话框: ###### 引用来自“空云万里晴”的答案 引用来自“空云万里晴”的答案 引用来自“空云万里晴”的答案 引用来自“空云万里晴”的答案 引用来自“sxgkwei”的答案 大小写? 没问题吧 呵呵,解决了! 也不知道怎么回事,现在能连上了 还是感谢你!thank you! 还有怎么在创建table? 如下图: 创建出现如下对话框: 在线等着哦! ######这不是SQL语法错误吗?###### 引用来自“无量”的答案 这不是SQL语法错误吗? 是啊 我想不用sql语句创建表, 但这样都报错,该怎么建表呢? ######这个create语句不是Mysql的语法 看起来像是你选错数据库类型了 找下连接或者创建工具的设置里面######你右键table,有create操作吗?实在不行就直接在mysql里面建好了。

kun坤 2020-05-29 13:07:26 0 浏览量 回答数 0

问题

【精品锦集】MySQL热门回答01

问问小秘 2019-12-01 19:51:42 82 浏览量 回答数 1

问题

MaxCompute常见问题:MaxCompute 其他使用问题

行者武松 2019-12-01 22:09:48 1989 浏览量 回答数 1

问题

阿里云服务器 如何处理网站高并发流量问题?(含教程)

元芳啊 2019-12-01 21:54:35 1511 浏览量 回答数 1

回答

回 2楼(zc_0101) 的帖子 您好,       您的问题非常好,SQL SERVER提供了很多关于I/O压力的性能计数器,请选择性能计算器PhysicalDisk(LogicalDisk),根据我们的经验,如下指标的阈值可以帮助你判断IO是否存在压力: 1.  % Disk Time :这个是磁盘时间百分比,这个平均值应该在85%以下 2.  Current Disk Queue Length:未完成磁盘请求数量,这个每个磁盘平均值应该小于2. 3.  Avg. Disk Queue Length:磁盘请求队列的平均长度,这个每个磁盘平均值也应该小于2 4.  Disk Transfers/sec:每次磁盘传输数量,这个每个磁盘的最大值应该小于100 5.  Disk Bytes/sec:每次磁盘传入字节数,这个在普通的磁盘上应该在10M左右 6.  Avg. Disk Sec/Read:从磁盘读取的平均时间,这个平均值应该小于10ms(毫秒) 7.  Avg. Disk Sec/Write:磁盘写入的平均时间,这个平均值也应该小于10ms(毫秒) 以上,请根据自己的磁盘系统判断,比如传统的机械臂磁盘和SSD有所不同。 一般磁盘的优化方向是: 1. 硬件优化:比如使用更合理的RAID阵列,使用更快的磁盘驱动器,添加更多的内存 2. 数据库设置优化:比如创建多个文件和文件组,表的INDEX和数据放到不同的DISK上,将数据库的日志放到单独的物理驱动器,使用分区表 3. 数据库应用优化:包括应用程序的设计,SQL语句的调整,表的设计的合理性,INDEX创建的合理性,涉及的范围很广 希望对您有所帮助,谢谢! ------------------------- 回 3楼(鹰舞) 的帖子 您好,      根据您的描述,由于查询产生了副本REDO LOG延迟,出现了架构锁。我们知道SQL SERVER 2012 AlwaysOn在某些数据库行为上有较多变化。我们先看看架构锁: 架构锁分成两类: 1. SCH-M:架构更改锁,主要发生在数据库SCHEMA的修改上,从你的描述看,没有更改SCHEMA,那么可以排除这个因素 2. SCH-S:架构稳定锁,主要发生在数据库的查询编译等活动 根据你的情况,应该属于SCH-S导致的。查询编译活动主要发生有新增加了INDEX, 更新了统计信息,未参数化的SQL语句等等 对于INDEX和SQL语句方面应,我想应该不会有太多问题。 我们重点关注一下统计信息:SQL SERVER 2012 AG副本的统计信息维护有两种: 1. 主体下发到副本 2. 临时统计信息存储在TEMPDB 对于主体下发的,我们可以设置统计信息的更新行为,自动更新时,可以设置为异步的(自动更新统计信息必须首先打开): USE [master] GO ALTER DATABASE [Test_01]     SET AUTO_UPDATE_STATISTICS_ASYNC ON WITH NO_WAIT GO 这样的话查询优化器不等待统计信息更新完成即编译查询。可以优化一下你的BLOCK。 对于临时统计信息存储在TEMPDB里面也是很重要的,再加上ALWAYSON的副本数据库默认是快照隔离,优化TEMPDB也是必要的,关于优化TEPDB这个我想大部分都知道,这里只是提醒一下。 除了从统计信息本身来解决,在查询过程中,可以降低查询的时间,以尽量减少LOCK的时间和范围,这需要优化你的SQL语句或者应用程序。 以上,希望对您有所帮助。谢谢! ------------------------- 回 4楼(leamonjxl) 的帖子 这是一个关于死锁的问题,为了能够提供帮助一些。请根据下列建议进行: 1.    跟踪死锁 2.    分析死锁链和原因 3.    一些解决办法 关于跟踪死锁,我们首先需要打开1222标记,例如DBCC TRACEON(1222,-1), 他将收集的信息写入到死锁事件发生的服务器上的日志文件中。同时建议打开Profiler的跟踪信息: 如果发生了死锁,需要分析死锁发生的根源在哪里?我们不是很清楚你的具体发生死锁的形态是怎么样的。 关于死锁的实例也多,这里不再举例。 这里只是提出一些可以解决的思路: 1.    减少锁的争用 2.    减少资源的访问数 3.    按照相同的时间顺序访问资源 减少锁的争用,可以从几个方面入手 1.    使用锁提示,比如为查询语句添加WITH (NOLOCK), 但这还取决于你的应用是否允许,大部分分布式的系统都是可以加WITH (NOLOCK), 金融行业可能需要慎重。 2.    调整隔离级别,使用MVCC,我们的数据库默认级别是READ COMMITED. 建议修改为读提交快照隔离级别,这样的话可以尽量读写不阻塞,只不过MVCC的ROW VERSION保存到TEMPDB下面,需要维护好TEMPDB。当然如果你的整个数据库隔离级别可以设置为READUNCOMMINTED,这些就不必了。 减少资源的访问数,可以从如下几个方面入手: 1.    使用聚集索引,非聚集INDEX的叶子页面与堆或者聚集INDEX的数据页面分离。因此,如果对非聚集INDEX 操作的话,会产生两个锁,一个是基本表,一个是非聚集INDEX。而聚集INDEX就不一样,聚集INDEX的叶子页面和表的数据页面相同,他只需要一个LOCK。 2.    查询语句尽量使用覆盖INDEX, 使用全覆盖INDEX,就不需要访问基本表。如果没有全覆盖,还会通过RID或者CLUSTER INDEX访问基本表,这样产生的LOCK可能会与其他SESSION争用。 按照相同的时间顺序访问资源: 确保每个事务按照相同的物理顺序访问资源。两个事务按照相同的物理顺序访问,第一个事务会获得资源上的锁而不会被第二个事务阻塞。第二个事务想获得第一个事务上的LOCK,但被第一个事务阻塞。这样的话就不会导致循环阻塞的情况。 ------------------------- 回 4楼(leamonjxl) 的帖子 两种方式看你的业务怎么应用。这里不仅是分表的问题,还可能存在分库,分服务器的问题。取决与你的架构方案。 物理分表+视图,这是一种典型的冷热数据分离的方案,大致的做法如下: 1.    保留最近3个月的数据为当前表,也即就是我们说的热数据 2.    将其他数据按照某种规则分表,比如按照年或者季度或者月,这部分是相对冷的数据 分表后,涉及到几个问题: 第一问题是,转移数据的过程,一般是晚上业务比较闲来转移,转移按照一定的规则来做,始终保持3个月,这个定时任务本身也很消耗时间 再者,关于查询部分,我想你们的数据库服务器应该通过REPLICATION做了读写分离的吧,主库我觉得压力不会太大,主要是插入或者更新,只读需要做视图来包含全部的数据,但通过UNION ALL所有分表的数据,最后可能还是非常大,在某些情况下,性能不一定好。这个是不是业务上可以解决。比如,对于1年前的历史数据,放在单独的只读上,相对热的数据放在一起,这样压力也会减少。 分区表的话,因为涉及到10亿数据,要有好的分区方案,相对比较简单一点。但对于10亿的大表,始终是个棘手的问题,无论分多少个分区,单个服务器的资源也是有限的。可扩展性方面也存在问题,比如在只读上你没有办法做服务器级别的拆分了。这可能也会造成瓶颈。 现在很多企业都在做分库分表,这些的要解决一些高并发,数据量大的问题。不知是否考虑过类似于中间件的方案,比如阿里巴巴的TDDL类似的方案,如果你有兴趣,可以查询相关资料。 ------------------------- 回 9楼(jiangnii) 的帖子 阿里云数据库不仅提供一个数据库,还提供数据库一种服务。阿里云数据库不仅简化了基础架构的部署,还提供了数据库高可用性架构,备份服务,性能诊断服务,监控服务,专家服务等等,保证用户放心、方便、省心地使用数据库,就像水电一样。以前的运维繁琐的事,全部由阿里云接管,用户只需要关注数据库的使用和具体的业务就好。 关于优化和在云数据库上处理大数据量或复杂的数据操作方面,在云数据库上是一样的,没有什么特别的地方,不过我们的云数据库是使用SSD磁盘,这个比普通的磁盘要快很多,IO上有很大的优势。目前单个实例支持1T的数据量大小。陆续我们会推出更多的服务,比如索引诊断,连接诊断,容量分析,空间诊断等等,这些工作可能是专业的DBA才能完成的,以后我们会提供自动化的服务来为客户创造价值,希望能帮助到客户。 谢谢! ------------------------- 回 12楼(daniellin17) 的帖子 这个问题我不知道是否是两个问题,一个是并行度,另一个是并发,我更多理解是吞吐量,单就并行度而言。 提高并行度需要考虑的因素有: 1.    可用于SQL SERVER的CPU数量 2.    SQL SERVER的版本(32位/64位) 3.    可用内存 4.    执行的查询类型 5.    给定的流中处理的行数 6.    活动的并发连接数量 7.    sys.configurations参数:affinity mask/max server memory (MB)/ max degree of parallelism/ cost threshold for parallelism 以DOP的参数控制并行度为例,设置如下: SELECT * FROM sys.configurations WITH (NOLOCK) WHERE name = 'max degree of parallelism' EXEC sp_configure 'max degree of parallelism',2 RECONFIGURE WITH OVERRIDE 经过测试,DOP设置为2是一个比较适中的状态,特别是OLTP应用。如果设置高了,会产生较多的SUSPEND进程。我们可以观察到资源等待资源类型是:CXPACKET 你可以用下列语句去测试: DBCC SQLPERF('sys.dm_os_wait_stats',CLEAR) SELECT * FROM sys.dm_os_wait_stats WITH (NOLOCK) ORDER BY 2 DESC ,3 DESC 如果是吞吐量的话。优化的范围就很广了。优化是系统性的。硬件配置我们选择的话,大多根据业务量来预估,然后考虑以下: 1.    RAID的划分,RAID1适合存放事务日志文件(顺序写),RAID10/RAID5适合做数据盘,RAID10是条带化并镜像,RAID5条带化并奇偶校验 2.    数据库设置,比如并行度,连接数,BUFFER POOL 3.    数据库文件和日志文件的存放规则,数据库文件的多文件设置规则 4.    TEMPDB的优化原则,这个很重要的 5.    表的设计方面根据业务类型而定 6.    CLUSTERED INDEX和NONCLUSTERED INDEX的设计 7.    阻塞分析 8.    锁和死锁分析 9.    执行计划缓冲分析 10.    存储过程重编译 11.    碎片分析 12.    查询性能分析,这个有很多可以优化的方式,比如OR/UNION/类型转换/列上使用函数等等 我这里列举一个高并发的场景: 比如,我们的订单,比如搞活动的时候,订单刷刷刷地增长,单个实例可能每秒达到很高很高,我们分析到最后最常见的问题是HOT PAGE问题,其等待类型是PAGE LATCH竞争。这个过程可以这么来处理,简单列几点,可以参考很多涉及高并发的案例: 1.    数据库文件和日志文件分开,存放在不同的物理驱动器磁盘上 2.    数据库文件需要与CPU个数形成一定的比例 3.    表设计可以使用HASH来作为表分区 4.    表可以设置无序的KEY/INDEX,比如使用GUID/HASH VALUE来定义PRIMARY KEY CLUSTER INDEX 5.    我们不能将自增列设计为聚集INDEX 这个场景只是针对高并发的插入。对于查询而言,是不适合的。但这些也可能导致大量的页拆分。只是在不同的场景有不同的设计思路。这里抛砖引玉。 ------------------------- 回 13楼(zuijh) 的帖子 ECS上现在有两种磁盘,一种是传统的机械臂磁盘,另一种是SSD,请先诊断你的IO是否出现了问题,本帖中有提到如何判断磁盘出现问题的相关话题,请参考。如果确定IO出现问题,可以尝试使用ECS LOCAL SSD。当然,我们欢迎你使用云数据库的产品,云数据库提供了很多有用的功能,比如高可用性,灵活的备份方案,灵活的弹性方案,实用的监控报警等等。 ------------------------- 回 17楼(豪杰本疯子) 的帖子 我们单个主机或者单个实例的资源总是有限的,因为涉及到很大的数据量,对于存储而言是个瓶颈,我曾使用过SAN和SAS存储,SAN存储的优势确实可以解决数据的灵活扩展,但是SAN也分IPSAN和FIBER SAN,如果IPSAN的话,性能会差一些。即使是FIBER SAN,也不是很好解决性能问题,这不是它的优势,同时,我们所有DB SERVER都连接到SAN上,如果SAN有问题,问题涉及的面就很广。但是SAS毕竟空间也是有限的。最终也会到瓶颈。数据量大,是造成性能问题的直接原因,因为我们不管怎么优化,一旦数据量太大,优化的能力总是有限的,所以这个时候更多从架构上考虑。单个主机单个实例肯定是抗不过来的。 所以现在很多企业在向分布式系统发展,对于数据库而言,其实有很多形式。我们最常见的是读写分离,比如SQL SERVER而言,我们可以通过复制来完成读写分离,SQL SERVER 2012及以后的版本,我们可以使用ALWAYSON来实现读写分离,但这只能解决性能问题,那空间问题怎么解决。我们就涉及到分库分表,这个分库分表跟应用结合得紧密,现在很多公司通过中间件来实现,比如TDDL。但是中间件不是每个公司都可以玩得转的。因此可以将业务垂直拆分,那么DB也可以由此拆分开来。举个简单例子,我们一个典型的电子商务系统,有订单,有促销,有仓库,有配送,有财务,有秒杀,有商品等等,很多公司在初期,都是将这些放在一个主机一个实例上。但是这些到了一定规模或者一定数据量后,就会出现性能和硬件资源问题,这时我们可以将它们独立一部分获完全独立出来。这些都是一些好的方向。希望对你有所帮助。 ------------------------- 回 21楼(dt) 的帖子 问: 求大数据量下mysql存储,优化方案 分区好还是分表好,分的过程中需要考虑事项 mysql高并发读写的一些解决办法 答: 分区:对于应用来说比较简单,改造较少 分表: 应用需较多改造,优点是数据量太大的情况下,分表可以拆分到多个实例上,而分区不可以。 高并发优化,有两个建议: 1.    优化事务逻辑 2.    解决mysql高并发热点,这个可以看看阿里的一个热点补丁: http://www.open-open.com/doc/view/d58cadb4fb68429587634a77f93aa13f ------------------------- 回 23楼(aelven) 的帖子 对于第一个问题.需要看看你的数据库架构是什么样的?比如你的架构具有高可用行?具有读写分离的架构?具有群集的架构.数据库应用是否有较冷门的功能。高并发应该不是什么问题。可扩展性方面需要考虑。阿里云数据库提供了很多优势,比如磁盘是性能超好的SSD,自动转移的高可用性,没有任何单点,自动灵活的备份方案,实用的监控报警,性能监控服务等等,省去DBA很多基础性工作。 你第二个问题,看起来是一个高并发的场景,这种高并发的场景容易出现大量的LOCK甚至死锁,我不是很清楚你的业务,但可以建议一下,首先可以考虑快照隔离级别,实现行多版本控制,让读写不要阻塞。至于写写过程,需要加锁的粒度降低最低,同时这种高并发也容易出现死锁,关于死锁的分析,本帖有提到,请关注。 第三个问题,你用ECS搭建自己的应用也是可以的,RDS数据库提供了很多功能,上面已经讲到了。安全问题一直是我们最看重的问题,肯定有超好的防护的。 ------------------------- 回 26楼(板砖大叔) 的帖子 我曾经整理的关于索引的设计与规范,可以供你参考: ----------------------------------------------------------------------- 索引设计与规范 1.1    使用索引 SQL SERVER没有索引也可以检索数据,只不过检索数据时扫描这个表而异。存储数据的目的,绝大多数都是为了再次使用,而一般数据检索都是带条件的检索,数据查询在数据库操作中会占用较大的比例,提高查询的效率往往意味着整个数据库性能的提升。索引是特定列的有序集合。索引使用B-树结构,最小优化了定位所需要的键值的访问页面量,包含聚集索引和非聚集索引两大类。聚集索引与数据存放在一起,它决定表中数据存储的物理顺序,其叶子节点为数据行。 1.2    聚集索引 1.2.1    关于聚集索引 没聚集索引的表叫堆。堆是一种没有加工的数据,以行标示符作为指向数据存储位置的指针,数据没有顺序。聚集索引的叶子页面和表的数据页面相同,因此表行物理上按照聚集索引列排序,表数据的物理顺序只有一种,所以一个表只有一个聚集索引。 1.2.2    与非聚集索引关系 非聚集索引的一个索引行包含指向表对应行的指针,这个指针称为行定位器,行定位器的值取决于数据页保存为堆还是被聚集。若是堆,行定位器指向的堆中数据行的行号指针,若是聚集索引表,行定位器是聚集索引键值。 1.2.3    设计聚集索引注意事项     首先创建聚集索引     聚集索引上的列需要足够短     一步重建索引,不要使用先DROP再CREATE,可使用DROP_EXISTING     检索一定范围和预先排序数据时使用,因为聚集索引的叶子与数据页面相同,索引顺序也是数据物理顺序,读取数据时,磁头是按照顺序读取,而不是随机定位读取数据。     在频繁更新的列上不要设计聚集索引,他将导致所有的非聚集所有的更新,阻塞非聚集索引的查询     不要使用太长的关键字,因为非聚集索引实际包含了聚集索引值     不要在太多并发度高的顺序插入,这将导致页面分割,设置合理的填充因子是个不错的选择 1.3    非聚集索引 1.3.1    关于非聚集索引 非聚集索引不影响表页面中数据的顺序,其叶子页面和表的数据页面时分离的,需要一个行定位器来导航数据,在将聚集索引时已经有说明,非聚集索引在读取少量数据行时特别有效。非聚集索引所有可以有多个。同时非聚集有很多其他衍生出来的索引类型,比如覆盖索引,过滤索引等。 1.3.2    设计非聚集索引     频繁更新的列,不适合做聚集索引,但可以做非聚集索引     宽关键字,例如很宽的一列或者一组列,不适合做聚集索引的列可作非聚集索引列     检索大量的行不宜做非聚集索引,但是可以使用覆盖索引来消除这种影响 1.3.3    优化书签查找 书签会访问索引之外的数据,在堆表,书签查找会根据RID号去访问数据,若是聚集索引表,一般根据聚集索引去查找。在查询数据时,要分两个部分来完成,增加了读取数据的开销,增加了CPU的压力。在大表中,索引页面和数据页面一般不会临近,若数据只存在磁盘,产生直接随机从磁盘读取,这导致更多的消耗。因此,根据实际需要优化书签查找。解决书签查找有如下方法:     使用聚集索引避免书签查找     使用覆盖索引避免书签查找     使用索引连接避免数据查找 1.4    聚集与非聚集之比较 1.4.1    检索的数据行 一般地,检索数据量大的一般使用聚集索引,因为聚集索引的叶子页面与数据页面在相同。相反,检索少量的数据可能非聚集索引更有利,但注意书签查找消耗资源的力度,不过可考虑覆盖索引解决这个问题。 1.4.2    数据是否排序 如果数据需要预先排序,需要使用聚集索引,若不需要预先排序就那就选择聚集索引。 1.4.3    索引键的宽度 索引键如果太宽,不仅会影响数据查询性能,还影响非聚集索引,因此,若索引键比较小,可以作为聚集索引,如果索引键够大,考虑非聚集索引,如果很大的话,可以用INCLUDE创建覆盖索引。 1.4.4    列更新的频度 列更新频率高的话,应该避免考虑所用非聚集索引,否则可考虑聚集索引。 1.4.5    书签查找开销 如果书签查找开销较大,应该考虑聚集索引,否则可使用非聚集索引,更佳是使用覆盖索引,不过得根据具体的查询语句而看。 1.5    覆盖索引 覆盖索引可显著减少查询的逻辑读次数,使用INCLUDE语句添加列的方式更容易实现,他不仅减小索引中索引列的数据,还可以减少索引键的大小,原因是包含列只保存在索引的叶子级别上,而不是索引的叶子页面。覆盖索引充当一个伪的聚集索引。覆盖索引还能够有效的减少阻塞和死锁的发生,与聚集索引类似,因为聚集索引值发生一次锁,非覆盖索引可能发生两次,一次锁数据,一次锁索引,以确保数据的一致性。覆盖索引相当于数据的一个拷贝,与数据页面隔离,因此也只发生一次锁。 1.6    索引交叉 如果一个表有多个索引,那么可以拥有多个索引来执行一个查询,根据每个索引检索小的结果集,然后就将子结果集做一个交叉,得到满足条件的那些数据行。这种技术可以解决覆盖索引中没有包含的数据。 1.7    索引连接 几乎是跟索引交叉类似,是一个衍生品种。他将覆盖索引应用到交叉索引。如果没有单个覆盖索引查询的索引而多个索引一起覆盖查询,SQL SERVER可以使用索引连接来完全满足查询而不需要查询基础表。 1.8    过滤索引 用来在可能没有好的选择性的一个或者多个列上创建一个高选择性的关键字组。例如在处理NULL问题比较有效,创建索引时,可以像写T-SQL语句一样加个WHERE条件,以排除某部分数据而检索。 1.9    索引视图 索引视图在OLAP系统上可能有胜算,在OLTP会产生过大的开销和不可操作性,比如索引视图要求引用当前数据库的表。索引视图需要绑定基础表的架构,索引视图要求企业版,这些限制导致不可操作性。 1.10    索引设计建议 1.10.1    检查WHERE字句和连接条件列 检查WHERE条件列的可选择性和数据密度,根据条件创建索引。一般地,连接条件上应当考虑创建索引,这个涉及到连接技术,暂时不说明。 1.10.2    使用窄的索引 窄的索引有可减少IO开销,读取更少量的数据页。并且缓存更少的索引页面,减少内存中索引页面的逻辑读取大小。当然,磁盘空间也会相应地减少。 1.10.3    检查列的唯一性 数据分布比较集中的列,种类比较少的列上创建索引的有效性比较差,如果性别只有男女之分,最多还有个UNKNOWN,单独在上面创建索引可能效果不好,但是他们可以为覆盖索引做出贡献。 1.10.4    检查列的数据类型 索引的数据类型是很重要的,在整数类型上创建的索引比在字符类型上创建索引更有效。同一类型,在数据长度较小的类型上创建又比在长度较长的类型上更有效。 1.10.5    考虑列的顺序 对于包含多个列的索引,列顺序很重要。索引键值在索引上的第一上排序,然后在前一列的每个值的下一列做子排序,符合索引的第一列通常为该索引的前沿。同时要考虑列的唯一性,列宽度,列的数据类型来做权衡。 1.10.6    考虑索引的类型 使用索引类型前面已经有较多的介绍,怎么选择已经给出。不再累述。 ------------------------- 回 27楼(板砖大叔) 的帖子 这两种都可以吧。看个人的喜好,不过微软现在的统一风格是下划线,比如表sys.all_columns/sys.tables,然后你再看他的列全是下划线连接,name     /object_id    /principal_id    /schema_id    /parent_object_id      /type    /type_desc    /create_date    /modify_date 我个人的喜好也是喜欢下划线。    

石沫 2019-12-02 01:34:30 0 浏览量 回答数 0

问题

【精品问答】带你进入数据库领域

谙忆 2020-04-07 20:45:48 12 浏览量 回答数 1

回答

回 1楼51干警网的帖子 用户名和密码没错哦。 我在本地也没有问题。而且,我用SQLyog(一个mysql图形用户界面工具)远程连接云服务器上的数据库也可以连接上! ------------------------- 回 3楼扛雷来了的帖子 就我一个人访问啊,刚刚部署的网站。 另外,请问怎么关注数据库网络情况? ------------------------- 回 4楼买醉的帖子 我知道肯定我的问题啦。 敢问大侠,如果出现这种问题,如何排除错误呢? ------------------------- 回 7楼买醉的帖子 你还需要什么信息呢? 数据库文档看了还是不能判断哪里有问题哦,在本地自己电脑上面搭建过了n次,都是正常的,我觉得自己对jforum还是比较熟悉的,不知道为什么在云服务器上面就连接超时。 另外,mysql还需要设置什么呢?不就是给指定的数据库创建一个用户名和密码么?我在本地用图形用户界面工具都是可以远程连接mysql呀。 ------------------------- 回 9楼买醉的帖子 能加你qq?我的qq:943608716 ------------------------- 回 9楼买醉的帖子 ------------------------- 回 12楼买醉的帖子 好的。thank you~ ------------------------- Remysql连接超时? 1、问题描述 Mysql连接超时。 2、原因分析 原因是vpsmate里面修改了root的密码,就导致报错mysql连接超时,这应该是vpsmate的一个bug,或者是云服务器的一个bug。 3、解决方法 一开始设置了mysql的密码之后,就不要修改它。 如果修改了,再把密码改回来。 我是在第二次换掉操作系统之后,一个个地排除才发现是这个问题。

内向 2019-12-02 01:01:48 0 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站