Computer scientist at Microsoft. Engineer on platform team of Business Central. Opinions are my own.
Playing around with languages, compilers, and runtimes.
Got the opportunity to go "under the hood" and provide some behind the scenes on how and why we have evolved AL over the years towards a more performant language.
https://t.co/LS5Sle8AWH
If you are interested in writing performant AL code for Business Central, this is a great opportunity.
You get a three for one deal here! AL code, compiler, and runtime experts in one session.
As always when I'm involved, internals included!
Wednesday at 14:00.
#msdyn365bc
@phenno1@erpthoughts Yes, but also smart sql, where we merge the calcfields into the query.
There was also some other scenarios regards table relations, but I cannot remember of the top of my head.
@phenno1@erpthoughts 2) To filter on flowfields, we might need the value of another field to be present.
We could JIT load out when loading the flowfield.
Both comes with trade-offs, eager adds a small extra cost (a few more fields) while JIT means it might fail due to the record having changed.
@phenno1@erpthoughts 1) Please read the remarks part on the same docs.
Which states the runtime might sometimes require more fields to be loaded.
The full list depends on platform version.
@MansaYay@StefanMaron@waldo1001 The key element is what the NST does with tri-state: it places a READCOMMIITTED hint on the sql statement.
How SQL server interprets that hint and executes it, that depends on your setup.
With RCSI no shared locks are taken, relying on row versioning and snapshot info.
@arthrvdv A succes metric for me is that people go away from the session with information enough to make an educated decision on that.
I hope you will turn it on, but that is up to you to decide after.
My blog post addresses it in a slightly more theoretical way:
https://t.co/JzkAW7h4Ed
I would argue the perfect last session for your #BCTechDays conference is to join Torben Meyhoff and I, for our session: Tri-State Locking: Reducing locking in the runtime
We will explain AL's locking scheme in-depth and explore recent improvements in the area.
@KarolakNatalie I think you reading too much into it, "performed optimally" here doesn't have to refer to performance.
It is non-optimal to read uncommitted when you anyways modify it just after.
The modify may even fail if someone else inserted the row and don't end up committing the row.
@mortenbraemer We didn't see too many places where the feature would be necessary, so OnPrem first. If the community is eager for the feature, we will re-consider it.
In the longer term we are thinking about allowing admins to allow persistent disable/enable on an environment.
Have you ever wondered how to swiftly delete data in #msdyn365bc? Most of the time, letting the runtime optimize is the way to go.
In my latest blog post we explore how customizations can bring the performance down + an informal reveal of AlterKey :)
https://t.co/r9cPClgKnb
@dan_flr We have been talking about introducing a TRUNCATE TABLE AL statement.
However, the question is always how often do developers really need to empty the entire table?
@waldo1001 Can you check if your previous deadlocks were coming from SELECT statements with UPDLOCK, since these should now be reading with READCOMMITTED instead.