比较简单的问题 关于数据库

一直没想明白,,我知道数据库里有并发控制的机制,但 如果有两个 会话 同时修改 同一个数据,这个时候 数据库会怎么做,它把哪个排前面 哪个排后面。

楼主应该是问就算是有事务,事务和事务的开始也会有冲突的,到底是哪个事务先获得锁。
这个应该是CPU决定的,底层都是调用操作系统的对应命令,操作系统调用CPU的指令,由CPU来决定哪个操作先操作寄存器,一级缓存等等,到什么时候将
缓存中的数据push到内存中去,不同的CPU有不同细节。CPU本身也有锁,锁也是有级别的。这也是CPU升级的原因之一吧,高级的CPU算法实现会优化的,当然也是需要操作系统适配的。
对于删除,mysql的innodb先是逻辑删除的,然后由定时循环主任务或者触发将数据物理内存删除,再push到磁盘上。
对于insert和update,同样先是到内存中,看到底有多少脏页,是可以配置的,符合条件后再统一push到磁盘上。

不会吧,数据库可以同时操作?

这是权限控制啊。如果都是普通角色的话,一般是不能修改数据的,最多也是修改自己对应的数据,不会存在同时修改同一条数据。

那有决定的同时,修改是会加锁的,第一个会话修改了没有提交,就没有释放锁,第二个会话就得不到锁,就没有办法提交修改结果。
但查询时没问题的

数据库系统概论这本书里 靠后面一章就是讲这些的 ,可以找来看看。
先看看事务管理 权限管理,再关注 死锁,共享锁,独占锁。等明白事务控制的流程 你就明白了 。

你这个属于多线程方面的知识,线程是异步的,没有谁先谁后。如果不加控制,现实中是不允许同时写的操作,在数据库方面控制是需要加事物的,程序那边是要加同步锁。

数据库事务,几种事务的隔离级别,里面有说,具体怎样我忘记了

两个会话同时修改一个数据的话会有锁机制的,是不允许同时操作的。可以设置数据库的隔离级别,mysql的是默认级别是Repeatable Read
可重复读,oracle的是Read Committed已提交读。

还是不很明白,我看过 事务的隔离级别,还有锁机制 这些我都看过,我的意思是 如果 A B 两个SQL 语句 同一时间修改 同一个数据..哪个先获得锁,,数据库是先给哪个 授权锁