我有一个表有170,002,225行,约35列和两个索引.我想添加一个列.alter table命令大约需要10个小时.在那段时间内,处理器似乎都不忙,也没有过多的IO等待.这是一款带有大量内存的4路高性能盒子.
这是我能做的最好的吗?有什么我可以看一下在调整db时优化add列吗?
每当我尝试使用Intellij中的gradle做任何事情时,我都会收到如下错误:
Executing command: "tasks"
Failed to connect to gradle process for command 'tasks'
ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files (x86)\JetBrains\IntelliJ IDEA 10.0\jre
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
Run Code Online (Sandbox Code Playgroud)
但是在我的环境中,我已经JAVA_HOME
在不同的目录中设置了正确的JDK.此外,当我查看IntelliJ项目时,它还会在正确的JDK位置显示JDK.我找不到任何试图将JDK指向Intellij JRE位置的东西.
有什么想法吗?
我在Ruby中有这样的代码:
@clientipaddress = request.env["HTTP_CLIENT_IP"]
if (@clientipaddress == nil)
@clientipaddress = request.env["HTTP_X_FORWARDED_FOR"]
end
if (@clientipaddress == nil)
@clientipaddress = request.env["REMOTE_ADDR"]
end
if (@clientipaddress != nil)
comma = @clientipaddress.index(",")
if (comma != nil && comma >= 0)
@clientipaddress = @clientipaddress[0, comma]
end
end
Run Code Online (Sandbox Code Playgroud)
它处理了知识产权可能出现的所有可能方式.例如,在我的本地开发机器上,没有代理.但在QA和Production中,代理存在,有时它们提供多个地址.
我不需要知道Groovy语法,只是哪种方法让我相当于我要求上面的IP的三种不同方式.
使用国际插件,是否有一种"正确"的方式来动态复数单词,或选择属性的复数版本?
我在网上看过各种各样的文章,但在这一点上它们似乎相当分散.在我的配置和我的方法中,我需要做什么才能获得hibernate会话.我正在尝试为存储过程进行一些直接的SQL调用.我有一个很大的代码库,我从Ruby移植了很多静态方法和存储过程调用.如果我需要使用sessionFactory,那么如何才能访问它?
我对我的应用程序进行了各种小的更改,并且在某些时候,grails应用程序服务器决定它需要重新启动一遍又一遍.
其他人都看到了这种疯狂的行为.我无法真正上传我的整个应用程序作为示例.我不知道我做了什么.我没有进行任何配置更改或插件更改.
我正在使用grails 1.2.
- 当我写这封电子邮件时,我又尝试了一下,我的行为略有不同.
它将重新启动应用程序,并显示它正在编译1源文件并继续重新编译一条消息.
我们遇到Mysql问题.当我四处搜寻时,我看到很多人遇到同样的问题.
我加入了一个产品,其中数据库有一些表,行数多达1.5亿行.我们的问题的一个例子是这些表中的一个具有超过30列,并且其中大约一半不再使用.当试图删除列或重命名列时,mysql想要复制整个表并重命名.有了这么多的数据,这需要花费很多时间来完成,而且网站几乎一直都处于脱机状态.这只是改进模式的几次大型迁移中的第一次.这些并非常规.我继承了很多清理工作.
我试着去查看人们是否与Postgres有同样的问题,我发现几乎没有什么可以比较这个问题.这是因为Postgres在这方面要好得多,或者只是少用人使用postgres?
从以下sql文档中的示例.如果我使用这些方法之一在grails服务类的中间创建一个sql实例,它会使用grails连接池吗?它会参与任何交易功能吗?我需要自己关闭连接吗?或者它会自动返回池中吗?
def db = [url:'jdbc:hsqldb:mem:testDB', user:'sa', password:'', driver:'org.hsqldb.jdbcDriver']
def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)
Run Code Online (Sandbox Code Playgroud)
或者如果您有现有连接(可能来自连接池)或数据源使用其中一个构造函数:
def sql = new Sql(datasource)
Run Code Online (Sandbox Code Playgroud)
现在你可以调用sql,例如创建一个表:
sql.execute '''
create table PROJECT (
id integer not null,
name varchar(50),
url varchar(100),
)
'''
Run Code Online (Sandbox Code Playgroud) 我有一个配置为使用JPA和Hibernate的大型Java应用程序。据推测,它还配置为对实体和查询缓存都使用ehcaching。但是,我已打开sql日志记录,并且没有实体被缓存。所有实体查询都在每个请求上发生。
我如何在运行时确定它是否甚至正在运行ehcache,以及它是否认为实体应该可缓存?
我没有写这个应用程序,所以在这里有些卡住了。
它使用声明进行类的缓存。
它正确地使用了Hibernate的所有其他声明来执行读/写操作。
我遇到的问题是Hibernate在懒惰的onetoone关系的另一边查询一个类.
对top_players的查询(取决于缓存设置)通过映射表进行查询以获取QHPlayer表的ID.
在执行主查询之后,它查询QHPlayer表的每个实例.
但是,它在两种不同的场景中做错了.
如果我打开了缓存,它将查询QHPlayer的实例,然后它将查询到inventory_item表.如果我关闭了缓存,它将通过加入inventory_item向QHPlayer进行查询.
问题是无论我怎么做,它都坚持查询inventory_item表.这是我不想要的.我目前不需要inventory_item中的数据.
我假设QHPlayer和PlayerInventoryItem之间的onetoone声明有问题.
有什么想法吗?
相关代码如下:
Query query = entityManager.createQuery( "SELECT c FROM top_players c WHERE c.teamId=:teamId ORDER BY c.level DESC, c.adjustedFantasyPointsTotal DESC, c.id ASC" );
query.setParameter( "teamId", teamId );
List<TopPlayers> results = query.getResultList();
@XmlAccessorType( XmlAccessType.PROPERTY)
@Entity( name="player_template")
@Table( name="player_template" )
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class QhPlayer implements Serializable {
@Id
public Integer getPlayerTemplateId() {
return playerTemplateId;
}
@OneToOne( mappedBy ="playerTemplate", fetch = FetchType.LAZY)
@XmlTransient
public PlayerInventoryItem getInventoryItem() {
return inventoryItem;
}
}
@Entity( name = "qhplayer_inventory_item" …
Run Code Online (Sandbox Code Playgroud) grails ×5
hibernate ×2
mysql ×2
alter ×1
ehcache ×1
gradle ×1
groovy ×1
performance ×1
postgresql ×1
sql ×1