所以这里是交易.我正在开发一个Android应用程序(虽然它可以像任何其他移动平台一样容易)偶尔会向服务器发送查询(编写的是Java).然后,该服务器将在MySQL数据库中搜索查询,并将结果发送回Android.虽然这听起来很通用,但这里有一些细节:
每次查询时,Android都会与服务器建立新的TCP连接.服务器地理位置接近,Android可能会移动很多,而且,由于Android应用程序可能只运行几个小时而只发送一些查询,这似乎是资源的最佳使用.
服务器可能同时拥有数百个(或甚至数千个)这些查询.
由于每个查询都在自己的Thread中运行,因此每个查询至少需要自己的Statement(并且可以拥有自己的Connection).
现在,服务器设置为与数据库建立一个连接,然后为每个查询创建一个新的Statement.我对那些有一些数据库经验的人的问题(特别是MySQL,因为它是一个MySQL数据库)是:
a)从单个连接创建一个每个线程的语句是否可以安全线程?据我所知,只是寻找确认.
b)多线程是否有任何线程安全的方式来使用单个PreparedStatement?这些查询都将完全相同,并且由于每个线程只执行一个查询然后返回,这将是理想的.
c)我应该为每个线程创建一个新的连接,还是从单个连接生成新的语句更好?我认为单个Connection在性能方面会更好,但我不知道建立数据库连接的开销是多少.
d)最好是为所有这些使用存储的SQL过程吗?
我们非常感谢您对这些事项的任何提示/意见/建议.
编辑:
为了澄清,android通过网络向服务器发送查询,然后服务器查询数据库.android不直接与数据库通信.我主要想知道服务器数据库连接的最佳实践.
维基百科中的文章得到编辑。它们可以增长/缩小/更新等。下面使用什么文件系统/数据库存储布局等来支持它。在数据库课程中,我已经阅读了一些有关可变长度记录的信息,但是对于小字符串而不是整个文档来说,这似乎更多。就像在文件系统中一样,文件可以增长/缩小等,我认为可以通过将块链接在一起来完成。每次,我们更新一个文件,而不是整个文件都被重写。也许这里会做类似的事情。
我正在寻找特定的名称,术语,甚至可能是如何定义mysql中的架构。(我认为维基百科使用mysql)。
以下是有关Wikipedia体系结构的一些文章的链接,但我无法从这些问题中回答我的问题:
http://dom.as/uc/workbook2007.pdf
谢谢,
我们正在使用PHP和Symfony框架开发应用程序.理想情况下,系统可以在远程服务器上运行,因此可以在任何地方在线使用.但是,也必须有离线可用性.
为此,系统将在远程服务器和本地服务器上运行.默认情况下,客户端将访问本地服务器,并且仅在设施外部在线工作.
因此,我们需要实现数据库同步,以便在本地和远程数据库上进行更改,而无需任何类型的客户端交互.如果可能,它应该是在后台运行的守护进程,同步数据库.主数据库将是本地数据库,因此它将优先考虑任何冲突.
我们还没有决定要使用的数据库系统(我们正在使用Doctrine,因此任何受支持的数据库都会这样做),所以我们真的在寻找具有最适合我们方案的解决方案.
只要不需要客户端交互,解决方案可以是专用的应用程序,无论是否是商业应用程序.
我们有一个非常奇怪的间歇性问题,该问题在上个月左右开始出现,因此与mssql服务器的某些连接失败并显示以下错误:
System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Run Code Online (Sandbox Code Playgroud)
该错误不会关闭站点,也不需要重新启动数据库-如果您只是重新运行,则同一查询将第二次运行。这意味着许多用户会时不时地遇到错误,并且必须刷新错误页面才能正常工作。
现在,我最初的下意识反应可能是由于:
与资源相关的问题-因此,我开始运行SQL事件探查器和perfmon,但未发现服务在努力保持每秒连接数方面的任何问题。我一直在查看MSSQL:SQL错误,MSSQL:等待统计信息,MSSQL:Exec统计信息,MSSQL:锁。有人对我应该在此处提出要求的其他统计数据有任何指导吗?
未封闭的数据库连接-经过所有数据层代码后,我排除了这一连接。我们拥有所有故障保险柜,可以阻止这种情况的发生。
与连接/网络相关的问题:我们的SQL Server与应用程序服务器位于单独的服务器(MS SQL Server Standard 2008)上(在IIS7上运行ASP.Net)-两台服务器均在xlarge Amazon EC2实例上运行,并配置了所有安全策略(根据亚马逊方向)。任何人都获得了有关如何测试两个服务器之间的连接性的指导,或者这可能是问题所在?
IIS连接字符串可能有问题吗?我尚未对此进行测试,但是我们是否应该使用要连接的计算机名称来完全限定服务器的性能(仅考虑一下)?我们使用以下格式的连接字符串:server=xxxxx;Database=xxxx;uid=xxxx;password=xxx;
非常感谢您的想法和见解!
提前致谢
有什么方法可以将.csv或制表符描述的.txt中的数据快速导入到SQL Compact Edition 3.5表中?
我有大量无法手动输入的数据。
我知道如果想导入到基于服务器的SQL数据库中,可以使用BULK INSERT函数,但是此方法在SQL CE中不起作用。
我使用Visual Studio 2010,并且安装了SQL Server Management Studio。
任何帮助将不胜感激!
我是MySQL的数据库管理员和开发人员.我和MySQL一起工作了几年.我最近询问和研究O'Reilly高性能MySQL第二版,以提高我在MySQL高级功能,高性能和可扩展性方面的技能,因为我经常因为缺乏MySQL的先进知识而感到沮丧(并且在很大程度上,我还有).
目前,我正在开展一个狡猾的网络项目.在这个项目中,我们将从一开始就拥有相当的内容和用户.我是数据库的设计者,这个数据库必须非常快(一些插入但主要是更重要的READS).
我想在这里讨论这些要求:
我有一些基本的设计疑问,我希望你帮我决定和学习哪种设计方法对于高性能MySQL数据库更好.
古典的aproach
下图显示了在数据库中思考思维的第一个可能的思考方法:数据库图
集中的aproach
但也许我们可以通过一些或伪对象导向范例来改进它,将一般项目和关系集中在一个共同项目表上.列出所有类型的项目也很有用:数据库图表
在此先感谢!!
我的db表看起来像这张照片.http://prntscr.com/22z1n
最近我创建了delete.php页面.它工作正常,但当我删除第21个用户下一个注册用户得到第24个ID而不是21.
是否可以将新注册的用户信息放到第一个空行?(在这种情况下排第21行)
在我的注册表中,新注册的用户可以在注册后写下现有用户的姓名,并与他们成为朋友.对于这种友谊,我有另一个表关联新注册用户和现有用户的ID.
为此,我在注册期间使用mysql_insert_id来获取新用户的id.但是在nex注册过程中删除了第21行后,mysql_insert_id给了我21号但是存储在第24行.并为新用户提供关联表21.我想解决这个问题
我是Android新手以下是我的代码我想通过单击按钮在数据库中添加数据但是当我点击按钮时我的应用程序崩溃可以任何人建议我这里的任何解决方案是我的代码:
public class Third extends Activity implements OnClickListener{
Button btn;
SQLiteDatabase db;
EditText edit1;
EditText edit2;
EditText edit3;
@Override
protected void onCreate(Bundle icicle) {
// TODO Auto-generated method stub
super.onCreate(icicle);
setContentView(R.layout.mit);
SQLiteDatabase db;
db = openOrCreateDatabase("doctorinfo.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
db.setVersion(1);
db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
final String CREATE_TABLE_COUNTRIES ="CREATE TABLE med_d ("+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"+ "DOC_NAME TEXT,"+ "DOC_NO TEXT,"+ "DOC_EMAIL TEXT);";
//db.execSQL(CREATE_TABLE_COUNTRIES);
btn=(Button)findViewById(R.id.button1);
edit1=(EditText)findViewById(R.id.editText1);
edit2=(EditText)findViewById(R.id.editText2);
edit3=(EditText)findViewById(R.id.editText3);
btn.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
String d=edit1.getText().toString();
String m=edit2.getText().toString();
String p=edit3.getText().toString();
ContentValues values …Run Code Online (Sandbox Code Playgroud) 我正在研究基于Java的备份客户端,该客户端扫描文件系统上的文件,并使用它找到要备份的目录和文件名填充Sqlite数据库.使用neo4j而不是sqlite是否有意义?它是否更适用于此应用程序并且更易于使用.我在想因为文件系统是树(或者如果考虑符号链接的图形),gaph数据库可能是合适的吗?sqlite数据库模式只定义了2个表,一个用于目录(完整路径和其他信息),另一个用于文件(名称只有外键用于包含目录表中的目录),因此它相对简单.
应用程序需要索引数百万个文件,因此解决方案需要快速.
我要求只有超级管理员才能修改"实时"数据.
目前,如果普通管理员想要对实时数据进行更改: -
如果我想尝试消除第1步并让旧数据保持有效直到超级用户批准更改,我有哪些选择?
我正在使用ASP.NET MVC和EF4,因此我对围绕EF的解决方案特别感兴趣,这些解决方案可以对我的控制器透明,但我也有兴趣了解数据库层中的解决方案(或完全不同的上下文) )